معماری و ساختار Page در SQL Server
معماری Page در SQL Server نحوه ذخیره دادهها در صفحات ۸ کیلوبایتی را توضیح میدهد و پایه مدیریت اطلاعات و ایندکسها است.
18 مرداد 1405
لینک کوتاه
معماری و ساختار Page در SQL Server
معماری Page در SQL Server یکی از مهمترین بخشهای موتور ذخیرهسازی این سیستم مدیریت پایگاه داده است.SQL Server تمامی اطلاعات مربوط به جداول، ایندکسها و سایر اشیای پایگاه داده را در واحدهایی به نام Page ذخیره میکند.
هر Page دارای اندازه ثابت ۸ کیلوبایت (8KB) است و کوچکترین واحدی محسوب میشود که SQL Server برای خواندن و نوشتن دادهها از آن استفاده میکند.
این ساختار باعث میشود مدیریت حافظه، بازیابی اطلاعات و پردازش دادهها با سرعت و کارایی بیشتری انجام شود.
هر Page از بخشهایی مانند Page Header، ناحیه ذخیره دادهها (Data Area) و Row Offset Array تشکیل شده است که هر کدام وظیفه مشخصی در نگهداری و مدیریت اطلاعات دارند.
آشنایی با ساختار Page به توسعهدهندگان و مدیران پایگاه داده کمک میکند تا مفاهیمی مانند Page Split، Fragmentation، نحوه عملکرد ایندکسها و بهینهسازی کوئریها را بهتر درک کنند و عملکرد پایگاه داده را بهبود ببخشند.
Page در SQL Server چیست؟
Page کوچکترین واحد ذخیرهسازی (Storage Unit) در SQL Server است.تمام دادههای جداول، ایندکسها و سایر اشیای پایگاه داده در Pageها ذخیره میشوند و SQL Server عملیات خواندن و نوشتن اطلاعات را در سطح Page انجام میدهد، نه در سطح رکورد.
هر Page دارای اندازه 8 کیلوبایت (8192 بایت) است و این اندازه در تمام نسخههای SQL Server ثابت است.
چرا SQL Server از Page استفاده میکند؟
ذخیره اطلاعات در Page باعث میشود:-
مدیریت حافظه سادهتر شود.
-
عملیات خواندن و نوشتن سریعتر انجام شود.
-
دادهها بهصورت منظم روی دیسک ذخیره شوند.
-
امکان مدیریت ایندکسها و Cache فراهم شود.
-
عملکرد Queryها بهبود پیدا کند.
ساختار Page در SQL Server
هر Page از سه بخش اصلی تشکیل شده است:1. Page Header
در ابتدای هر Page حدود 96 بایت برای اطلاعات مدیریتی رزرو میشود.این بخش شامل اطلاعاتی مانند:
-
شماره Page
-
نوع Page
-
تعداد رکوردها
-
فضای خالی
-
شناسه فایل
-
اطلاعات تخصیص
2. Data Area
بخش اصلی Page است که دادههای جدول یا ایندکس در آن ذخیره میشوند.
نمونه:
| ID | Name |
| 1 | Ali |
| 2 | Sara |
| 3 | Reza |
تمام این رکوردها داخل قسمت Data قرار میگیرند.
3. Row Offset Array
در انتهای Page آرایهای وجود دارد که محل قرارگیری هر رکورد را مشخص میکند.به جای جستجوی کل Page، SQL Server با استفاده از این آرایه مستقیماً رکورد موردنظر را پیدا میکند.
اندازه Page در SQL Server
هر Page برابر است با:
8192 Bytes
تقسیمبندی آن:
| بخش | اندازه تقریبی |
| Page Header | 96 Bytes |
| دادهها | حدود 8060 Bytes |
| Row Offset Array | متغیر |
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
ارتباط Page و Extent
Pageها بهصورت گروههای هشتتایی مدیریت میشوند.هر:
8 Page
برابر است با:
1 Extent
اندازه هر Extent:
64 KB
به همین دلیل SQL Server معمولاً حافظه را در قالب Extent مدیریت میکند.
انواع Page در SQL Server
SQL Server تنها از یک نوع Page استفاده نمیکند.مهمترین انواع آن عبارتاند از:
| نوع Page | کاربرد |
| Data Page | ذخیره اطلاعات جدول |
| Index Page | ذخیره ساختار ایندکس |
| IAM Page | مدیریت Extentها |
| PFS Page | ثبت فضای خالی |
| GAM Page | مدیریت تخصیص Extent |
| SGAM Page | مدیریت Shared Extent |
| Boot Page | اطلاعات پایگاه داده |

Data Page چیست؟
رایجترین نوع Page است.تمام رکوردهای جدول در این Page ذخیره میشوند.
مثلاً جدول زیر:
Customers
| ID | Name |
| 1 | Ali |
| 2 | Sara |
| 3 | Reza |
در Data Page قرار میگیرد.
Index Page چیست؟
اگر روی جدول ایندکس ایجاد کنید، SQL Server اطلاعات ایندکس را داخل Index Page ذخیره میکند.مثلاً:
CREATE INDEX IX_Customers_Name
ON Customers(Name);
اکنون SQL Server ساختار B-Tree مربوط به ایندکس را داخل مجموعهای از Index Pageها نگهداری میکند.
مثال کاربردی: ثبت اطلاعات مشتریان
فرض کنید جدول زیر را ایجاد کردهایم:CREATE TABLE Customers
(
Id INT PRIMARY KEY,
FullName NVARCHAR(100),
City NVARCHAR(50)
);
سپس:
INSERT INTO Customers
VALUES
(1,'علی','تهران'),
(2,'سارا','اصفهان'),
(3,'رضا','تبریز');
SQL Server این رکوردها را بهترتیب داخل یک یا چند Data Page ذخیره میکند.
اگر تعداد رکوردها کم باشد، همه آنها ممکن است در یک Page قرار بگیرند؛ با افزایش دادهها، Pageهای جدید بهصورت خودکار ایجاد میشوند.
مثال کاربردی: رشد جدول
فرض کنید روزانه هزاران سفارش در جدول Orders ثبت میشود.در ابتدا:
Page 1
پر میشود.
سپس:
Page 2
ایجاد میشود.
بعد:
Page 3
و به همین ترتیب.
کاربر نیازی به مدیریت این فرآیند ندارد؛ SQL Server بهصورت خودکار تخصیص Pageها را انجام میدهد.
Page Split چیست؟
اگر یک Page کاملاً پر باشد و رکورد جدیدی وارد شود، SQL Server ممکن است اطلاعات را بین دو Page تقسیم کند.به این عملیات:
Page Split
گفته میشود.نتیجه:
- ایجاد Page جدید
- انتقال بخشی از رکوردها
- کاهش سرعت درج اطلاعات
- افزایش Fragmentation
Fragmentation و ارتباط آن با Page در SQL Server
با گذشت زمان، Pageها به ترتیب اولیه روی دیسک قرار نمیگیرند.این موضوع باعث ایجاد Fragmentation میشود.
پیامدها
- افزایش عملیات I/O
- کاهش سرعت Query
- افزایش زمان Scan
راهکارها
- Rebuild Index
- Reorganize Index
- انتخاب Fill Factor مناسب
مشاهده اطلاعات Page در SQL Server
SQL Server امکان بررسی ساختار داخلی Page را نیز فراهم کرده است.نمونه دستور:
DBCC IND('DatabaseName','Customers',1);
و برای مشاهده جزئیات یک Page:
DBCC PAGE('DatabaseName',1,150,3);
این دستورات بیشتر برای مدیران پایگاه داده (DBA) و تحلیل عملکرد سیستم استفاده میشوند.
بهترین زمان برای معماری Page در SQL Server
درک ساختار Page زمانی اهمیت بیشتری پیدا میکند که:-
با حجم زیادی از دادهها کار میکنید.
-
قصد بهینهسازی Queryها را دارید.
-
عملکرد ایندکسها را بررسی میکنید.
-
Fragmentation را مدیریت میکنید.
-
بهعنوان DBA فعالیت میکنید.
مزایای شناخت ساختار Page در SQL Server
-
درک بهتر نحوه ذخیره اطلاعات
-
بهینهسازی عملکرد Queryها
-
مدیریت بهتر ایندکسها
-
کاهش Fragmentation
-
افزایش سرعت بازیابی دادهها
-
تحلیل دقیقتر مشکلات کارایی

نکات مهم معماری Page در SQL Server
- اندازه هر Page در SQL Server همیشه 8KB است.
- هر Extent از 8 Page تشکیل میشود.
- Page کوچکترین واحد ذخیرهسازی داده است.
- SQL Server دادهها را در سطح Page میخواند و مینویسد.
- پر شدن Pageها و ایجاد Page Split میتواند روی کارایی تأثیر منفی بگذارد.
جمعبندی
معماری و ساختار Page در SQL Server یکی از مهمترین مفاهیم داخلی این سیستم مدیریت پایگاه داده است.تمام اطلاعات جداول، ایندکسها و سایر اشیای پایگاه داده در Pageهای ۸ کیلوبایتی ذخیره میشوند و SQL Server عملیات خواندن، نوشتن و مدیریت دادهها را بر اساس این ساختار انجام میدهد.
آشنایی با Page، Extent، انواع Pageها و مفاهیمی مانند Page Split و Fragmentation به شما کمک میکند عملکرد پایگاه داده را بهتر تحلیل و بهینهسازی کنید.


کاربران ما
شما هم نظرتون با ما دریاره “معماری و ساختار Page در SQL Server” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید