عملکرد سرور SQL Server وابسته به منابع در اختیار سرور می باشد و عملکرد دیسک که احتمالا مهم ترین منبع می باشد تاثیر بسزایی در عملکر سرور SQL دارد برای به حداکثر رساندن عملکرد دیسک معمولا مبحث Allocation Unit Size و Stripe_Unit_Size مورد توجه قرار میگیرد اما موضوع Partition Alignment ( تنظیم شروع پارتیشن) که به شدت روی کارایی دیسک تاثیر دارد معمولا فراموش می شود.
مبحث Partition Alignment یا تنظیم شروع پارتیشن
افرادی که با سیستم های ذخیره ساز سر و کار دارند، می دانند که پایین ترین واحد تقسیم اطلاعات روی یک هارددیسک، یک سکتور است هر سکتور 512 بایت می باشد. در واقع یک سکتور حداقل مقداری از اطلاعات است که هر هارد دیسک در هر دور خواندن یا نوشتن روی آن کار می کند، حتی زمانی که شما یک بایت از هارد دیسک می خوانید یا می نویسید، حداقل یک سکتور آن خوانده یا نوشته می شود.
در سیستم عامل های قدیمی سیستم عامل 63 سکتور اول را برای ذخیره MBR (Master Boot Record)استفاده می کند وهر سکتور 512 بایت می باشد
63sector*512 byte=32256 byte=31.5 KB
اولین بلوک اطلاعات کاربر پس این آدرس قرار میگیرد و و آدرس شروع پارتیشن های بعدی( Partition_Offset) نیز متاثیر از این موضوع میباشد
حال فرض کنید Allocation Unit Size برابر 64k و Stripe_Unit_Size برابر 64k تنظیم شده است
اتقاقی که در عمل رخ می دهد مطابق شکل زیر می باشد


واین بدین معنی می باشد که هر بلاک داده کاربر در دو Stripe_Unit_Size شکسته می شود و برای خواندن یک بلاک داده باید دو Stripe_Unit_Size واکشی شود که این باعث I/O اضافی می شود
برای دیدن مقدار Partition_Offset می توان از دستور ذیل استفاده نمود


درسیستم عامل window server 2008 این مشکل حل شده است و مقدار partition alignment برابر 1024kb در نظر گرفته شده است
اما نکته ای که باید مورد توجه قرار گیرد این است که مقدار partition alignment پارتشین های موجود همان مقدار قبلی می باشد و این مقدار باید اصلاح گردد و پیشنهاد می باشد برای اصلاح آن حتما موارد ذیل رعایت گردد
Partition_Offset ÷ Stripe_Unit_Size = integer value
Stripe_Unit_Size ÷ File_Allocation_Unit_Size =integer value
توجه:
از دسامبر ۲۰۰۹، شرکت وسترن دیجیتال اولین هارددیسک خود را که هر سکتور آن به جای ۵۱۲ بایت، ۴۰۹۶ بایت است به بازار ارائه کرد که به اسم Advanced Format Disk یا Sector Disk 4kشناخته می شوند.سکتورهای 4k مسیر را برای ساختن دیسک های با ظرفیت بیشتر هموارتر می کنند. به همین خاطر سازندگان اصلی هارددیسک در دنیا با هم توافق کرده اند که از ژانویه ۲۰۱۱ تمام هارددیسک های ساخته شده در دنیا سکتورهای 4k داشته باشند.
بدلیل ناسازگاری سیستم عامل قدیمی با سیستم Advanced Format Disk مبحث Sector Emulation مطرح می شود که این موضوع و Partition_Offset باعث سربار اضافی به سیستم خواهد داشت و نیاز است partition alignment مورد توجه و اصلاح قرار گیرد.
برای مطالعه بیشتر به لینک های ذیل مراجه شود
منبع: آموزش SQL Server نیک آموز
6 دیدگاه
مهدی ربانی ذبیحی
ممنون بسیار عالی بود منتظر مقاله های بیشتر شما تو این زمینه هستیم
Hamid J. Fard
مقاله بسیار جالبی بود. بنده شخصا از دیسکهای ۴ک اطلاعی نداشتم.
سید سیاوش گلچوبیان
مگر امکان تخصیص Allocation Unit Size به مقدار بیش از 64K در Windows وجود دارد ؟
مسعود طاهری
سلام
سید سیاوش گلچوبیان
سلام
مقاله بسیار جالبی بود، همچنین مقاله ای که در mssqltips اشاره کرده بودید و همچنین قسمت دوم مقاله mssqltips هم بسیار جالب و کاربردی بود. نفهمیدم چطور شد در حین تحقیق بر روی موضوعی که شما بهش اشاره کردید سر از یکی از مقالات kendra در آوردم که تست جالبی رو زده بود (موضوع در مورد Allocation Unit Size پارتیشن ای است که Log فایل بر روی آن قرار میگیرد و میزان تاثیر گذاری آن بر روی IO لاگ فایل ها)، به جهت جالب بودن اون مقاله آدرس رو در پایین برای کسانی که دوست دارن بخوننش میگذارم:
https://www.brentozar.com/archive/2012/05/how-big-your-log-writes-spying-on-sql-server-transaction-log/
mpoorsalek@gmail.com
جالب بود لطفا مباحث بیشتری در این خصوص قرار بدید