درون یک Page در SQL Server چه می گذرد؟

درون یک Page در SQL Server چه می گذرد؟

نوشته شده توسط: میلاد فیروزی
تاریخ انتشار: ۲۱ دی ۱۳۹۴
آخرین بروزرسانی: 28 بهمن 1403
زمان مطالعه: 3 دقیقه
۵
(۱)

Page در SQL Server، همان طور که می دانید تمامی اطلاعات شما در SQL Server در Data Page هایی به ظرفیت ۸ کیلوبایت ذخیره می گردند. پایگاه داده SQL Server اطلاعات را سطر به سطر ذخیره می کند و خوب با احتساب این اطلاعات می توانید، با توجه به تعریف جداولتان بفهمید در هر Page چند سطر از اطلاعات شما ذخیره می شوند. به طور کلی هر چقدر تعداد سطرهایی که در یک Page ذخیره می شوند بیشتر باشد بهتر است چون SQL Server هر بازی که به سراغ یکی از Pageها می آید نمی تواند سطر خاصی را بخواند بلکه مجبور است تمام اطلاعات آن Page را بخواند. 

در کل چند نوع Page در SQL Server داریم؟

  1.  Data Page
  2. Index Page
  3. System Page

در نتیجه هرچقدر سطرهای بیشتری در آن Page ذخیره شده باشند. SQL با خواندن تعداد Pageهای کمتر اطلاعات بیشتری را می تواند واکشی کند و این نکته ایست که در طراحی جداول می تواند مورد بررسی قرار گیرد. یک Data Page همیشه از ۳ بخش تشکیل شده است.

  1. Page Header
  2. Payload
  3. Row Offset Array

 Page Header معمولا مستقل از نوع Page طولش ۹۶ بایت می باشد و اطلاعاتی نظیر Page Id و Object Id و … را در خود ذخیره می کند. هیجان انگیز ترین بخش Page قسمت Payload می باشد، زیرا اطلاعات ما در این قسمت ذخیره می گردند.سرور از ۸۱۹۲ بایت کلی (۸ کیلوبایت) ۸۰۹۶ بایت برای این بخش در اختیار شما قرار می دهد و می توانید تعداد سطرهای ذخیره شده در یک Page را از همین ۸۰۹۶ بایت محاسبه کنید. همجنین شما می‌توانید کوئری نویسی را به صورت گام‌به‌گام از نیک آموز فرا بگیرید. 

و نهایتا در آخرین قسمت Row Offset Array را داریم، Row Offset Array نیز بخشی از همان ۸۰۹۶ بایت می باشد و برای هر سطر از دیتا ۲ بایت ذخیره می کند که نشان می دهد. رکورد شما در کجای Page قرار دارد ، شناسایی این بخش به مفهوم ایندکس گذاری به شما کمک خواهد کرد.نمای کلی یک Page را در تصویر ذیل می توانید مشاهده کنید.
بیایید یک جدول بسازیم:
CREATE TABLE Customers
(
FirstName CHAR(50) NOT NULL,
LastName CHAR(50) NOT NULL,
Address CHAR(100) NOT NULL,
ZipCode CHAR(5) NOT NULL,
Rating INT NOT NULL,
ModifiedDate DATETIME NOT NULL,
)
GO
با توجه به این تعریف و با توجه با اندازه ی هر ستون حال می توانیم به راحتی محاسبه کنیم در هر Page چند سط جا می شود،
  ۲۲۶ = (۲ + ۵۰ + ۵۰ + ۱۰۰ + ۵ + ۴ + ۸ + ۷)
خوب با تقسیم ۸۰۹۶ بر ۲۲۶ به عدد ۳۵.۶ می رسیم ، این یعنی در این Page حداکثر ۳۵ رکورد ذخیره خواهد شد و بقیه فضای باقی مانده خالی باقی خواهند ماند ، در بدترین حالت اگر اندازه جدول شما ۴۰۳۱ بایت شود شما ۴۰۲۹ بایت را هدر داده اید ، پس شناختن ساختار صفحات می تواند تا حدود بسیار زیادی به تعریف درست جداول شما و Performance نهایی دیتابیس شما کمک کند. با استفاده از Query زیر می توانید فضای هدر داده شده در Page توسط طراحی جدولتان را به دست آورید ، افراد علاقه‌مند می‌توانند با مطالعه مقاله پرکاربردترین دستورات SQL Server، دانش خود را در زمینه کوئری‌نویسی گسترش دهند.
 SELECT
DB_NAME(database_id),
SUM(free_space_in_bytes) / 1024 AS 'Free_KB'
FROM sys.dm_os_buffer_descriptors
WHERE database_id <> 32767
GROUP BY database_id
ORDER BY SUM(free_space_in_bytes) DESC
GO
 

سخن پایانی

Page در SQL Server، در این مقاله مبحث page در SQL و انواع page را بررسی کردیم در پایان امیدوارم این مقاله باعث شود تا در طراحی جداول دیتابیس خود این اطلاعات را به کار برده نهایتا به Performance دیتابیس کمک کنید. ما در نیک آموز منتظر نظرات ارزشمند شما درباره این مقاله هستیم.


مشاهده کامل‌ترین و بروزترین آموزش sql server در نیک آموز


چه رتبه ای می‌دهید؟

میانگین ۵ / ۵. از مجموع ۱

اولین نفر باش

title sign
معرفی نویسنده
میلاد فیروزی
مقالات
8 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
میلاد فیروزی
title sign
دیدگاه کاربران

دانلود رایگان: آموزش SQL Server

هر روز یک ویدئو آموزشی رایگان برای شما ایمیل خواهد شد!

پاپ آپ | SQL Server

  • این قسمت برای اهداف اعتبارسنجی است و باید بدون تغییر باقی بماند.