خانه SQL Server درون یک Page در SQL Server چه می گذرد؟ SQL Server افزایش سرعت SQL Server نوشته شده توسط: میلاد فیروزی تاریخ انتشار: ۲۱ دی ۱۳۹۴ آخرین بروزرسانی: ۱۴ مهر ۱۴۰۲ زمان مطالعه: 6 دقیقه ۵ (۱) در کل چند نوع Page در SQL Server داریم Data Page Index Page System Page همان طور که می دانید تمامی اطلاعات شما در SQL Server در Data Pageهایی به ظرفیت ۸ کیلوبایت ذخیره می گردند. SQL Server اطلاعات را سطر به سطر ذخیره می کند و خوب با احتساب این اطلاعات می توانید با توجه به تعریف جداولتان بفهمید در هر Page چند سطر از اطلاعات شما ذخیره می شوند ، به طور کلی هر چقدر تعداد سطرهایی که در یک Page ذخیره می شوند بیشتر باشد بهتر است چون SQL Server هر بازی که به سراغ یکی از Pageها می آید نمی تواند سطر خاصی را بخواند بلکه مجبور است تمام اطلاعات آن Page را بخواند ، در نتیجه هرچقدر سطرهای بیشتری در آن Page ذخیره شده باشند SQL با خواندن تعداد Pageهای کمتر اطلاعات بیشتری را می تواند واکشی کند و این نکته ایست که در طراحی جداول می تواند مورد بررسی قرار گیرد.یک Data Page همیشه از ۳ بخش تشکیل شده است. Page Header Payload Row Offset Array Page Header معمولا مستقل از نوع Page طولش ۹۶ بایت می باشد و اطلاعاتی نظیر Page Id و Object Id و … را در خود ذخیره می کند.هیجان انگیز ترین بخش Page قسمت Payload می باشد زیرا اطلاعات ما در این قسمت ذخیره می گردند.سرور از ۸۱۹۲ بایت کلی (۸ کیلوبایت) ۸۰۹۶ بایت برای این بخش در اختیار شما قرار می دهد و می توانید تعداد سطرهای ذخیره شده در یک Page را از همین ۸۰۹۶ بایت محاسبه کنید. و نهایتا در آخرین قسمت Row Offset Array را داریم ، Row Offset Array نیز بخشی از همان ۸۰۹۶ بایت می باشد و برای هر سطر از دیتا ۲ بایت ذخیره می کند که نشان می دهد رکورد شما در کجای Page قرار دارد ، شناسایی این بخش به Indexگذاری به شما کمک خواهد کرد.نمای کلی یک 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 توسط طراحی جدولتان را به دست آورید ، 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 در پایان امیدوارم این مقاله باعث شود تا در طراحی جداول دیتابیس خود این اطلاعات را به کار برده نهایتا به Performance دیتابیس کمک کنید. چه رتبه ای میدهید؟ میانگین ۵ / ۵. از مجموع ۱ اولین نفر باش معرفی نویسنده مقالات 8 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده میلاد فیروزی معرفی محصول مسعود طاهری آموزش ۳ در ۱ Performance Tuning در SQL Server 6.700.000 تومان مقالات مرتبط ۱۵ مهر SQL Server معرفی Performance Monitor ابزار مانیتورینگ SQL Server تیم فنی نیک آموز ۱۱ مهر SQL Server راهنمای جامع مانیتورینگ بکاپ ها در SQL Server تیم فنی نیک آموز ۰۸ مهر SQL Server Resource Governor چیست؟ آشنایی با نحوه پیکربندی و اهمیت های آن تیم فنی نیک آموز ۰۳ مهر SQL Server روش استفاده از Policy-Based Management در امنیت SQL server تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ mohsen.farhangian ۱۲ / ۰۹ / ۹۵ - ۰۲:۲۷ با سلام.ممنون از مطلبتون. لطفا اگه میشه در مورد این اعداد یه توضیح بدید که از کجا اومدن ؟ ۲۲۶ = (۲ + ۵۰ + ۵۰ + ۱۰۰ + ۵ + ۴ + ۸ + ۷) پاسخ به دیدگاه mohsen.farhangian ۱۲ / ۰۹ / ۹۵ - ۰۲:۲۷ با سلام.ممنون از مطلبتون. لطفا اگه میشه در مورد این اعداد یه توضیح بدید که از کجا اومدن ؟ ۲۲۶ = (۲ + ۵۰ + ۵۰ + ۱۰۰ + ۵ + ۴ + ۸ + ۷) پاسخ به دیدگاه غلامحسین عبادی ۱۴ / ۱۱ / ۹۴ - ۰۴:۱۲ با سلام و عرض ادب ممنون بابت زحمات شما دوست عزیز . متاسفانه غلط دیگه در متن فوق زیاد دیده می شود . بنده نیز مانند سایر دوستان عدد بدست آمده (عدد ۲۲۶) را کاملا توضیح دهید لطفا . ممنون پاسخ به دیدگاه احمدرضا فرخ ناد ۳۰ / ۱۰ / ۹۴ - ۰۸:۰۹ با سلام.ممنون از مطلبتون. لطفا اعداد ۲ و ۷ را توضیح بدهید که از کجا آمده اند؟ و اگر قسمت Row Offset Array جزئی از همان ۸۰۹۶ بایت هستند ژس تقسیم ۸۰۹۶ بر ۲۲۶ صحیح نیست چون قسمتی از همین فضای ۸۰۹۶ ای توسط Row Offset Array گرفته شده است. پاسخ به دیدگاه محمد واحدی ۲۷ / ۱۰ / ۹۴ - ۰۲:۳۹ ظرفیت مجاز برای استفاده از هر Page در Data File برابر با ۸۰۵۳ بایت می باشد. پاسخ به دیدگاه مهدی ۲۶ / ۱۰ / ۹۴ - ۰۹:۰۴ با درود سپاس از مقاله خوبتوندو سوال که ممکنه خیلی ابتدایی باشد اما ممنون میشم پاسخ دهید ۲۲۶ = (۲ + ۵۰ + ۵۰ + ۱۰۰ + ۵ + ۴ + ۸ + ۷) نحوه محاسبه چون اولین و آخرین عدد را متوجه نمیشم چیه؟۲ – کوئری را اجرا کردم و برای هر دیتا بیس مقداری آزاد را نشان داد از کجا متوجه بشم مربوط به کدام جدول است با سپاس پاسخ به دیدگاه سلیم ظریف برگی ۲۴ / ۱۰ / ۹۴ - ۰۱:۲۲ مثل همیشه عالی و کابردی و روان پاسخ به دیدگاه مهدی ربانی ذبیحی ۲۳ / ۱۰ / ۹۴ - ۰۶:۲۹ با سلام ممنون از مقاله خوبتون بسیار عالی بود پاسخ به دیدگاه