خانه SQL Server Partition Alignment (تنظیم شروع پارتیشن) و تاثیر آن بر عملکرد دیسک SQL Server نوشته شده توسط: محمدجواد فتح قریب ۰۱ بهمن ۱۳۹۴ زمان مطالعه: ق دقیقه ۰ (۰) مقدمه عملکرد سرور SQL Server وابسته به منابع در اختیار سرور می باشد و عملکرد دیسک که احتمالا مهم ترین منبع می باشد تاثیر بسزایی در عملکر سرور SQL دارد برای به حداکثر رساندن عملکرد دیسک معمولا مبحث Allocation Unit Size و Stripe_Unit_Size مورد توجه قرار میگیرد اما موضوع Partition Alignment ( تنظیم شروع پارتیشن) که به شدت روی کارایی دیسک تاثیر دارد معمولا فراموش می شود. مبحث Partition Alignment یا تنظیم شروع پارتیشن افرادی که با سیستم های ذخیره ساز سر و کار دارند، می دانند که پایین ترین واحد تقسیم اطلاعات روی یک هارددیسک، یک سکتور است هر سکتور ۵۱۲ بایت می باشد. در واقع یک سکتور حداقل مقداری از اطلاعات است که هر هارد دیسک در هر دور خواندن یا نوشتن روی آن کار می کند، حتی زمانی که شما یک بایت از هارد دیسک می خوانید یا می نویسید، حداقل یک سکتور آن خوانده یا نوشته می شود. در سیستم عامل های قدیمی سیستم عامل ۶۳ سکتور اول را برای ذخیره MBR (Master Boot Record)استفاده می کند وهر سکتور ۵۱۲ بایت می باشد ۶۳sector*512 byte=32256 byte=31.5 KB اولین بلوک اطلاعات کاربر پس این آدرس قرار میگیرد و و آدرس شروع پارتیشن های بعدی( Partition_Offset) نیز متاثیر از این موضوع میباشد حال فرض کنید Allocation Unit Size برابر ۶۴k و Stripe_Unit_Size برابر ۶۴k تنظیم شده است اتقاقی که در عمل رخ می دهد مطابق شکل زیر می باشد واین بدین معنی می باشد که هر بلاک داده کاربر در دو Stripe_Unit_Size شکسته می شود و برای خواندن یک بلاک داده باید دو Stripe_Unit_Size واکشی شود که این باعث I/O اضافی می شود برای دیدن مقدار Partition_Offset می توان از دستور ذیل استفاده نمود درسیستم عامل window server 2008 این مشکل حل شده است و مقدار partition alignment برابر ۱۰۲۴kb در نظر گرفته شده است اما نکته ای که باید مورد توجه قرار گیرد این است که مقدار partition alignment پارتشین های موجود همان مقدار قبلی می باشد و این مقدار باید اصلاح گردد و پیشنهاد می باشد برای اصلاح آن حتما موارد ذیل رعایت گردد Partition_Offset ÷ Stripe_Unit_Size = integer value Stripe_Unit_Size ÷ File_Allocation_Unit_Size =integer value توجه از دسامبر ۲۰۰۹، شرکت وسترن دیجیتال اولین هارددیسک خود را که هر سکتور آن به جای ۵۱۲ بایت، ۴۰۹۶ بایت است به بازار ارائه کرد که به اسم Advanced Format Disk یا Sector Disk 4kشناخته می شوند.سکتورهای ۴k مسیر را برای ساختن دیسک های با ظرفیت بیشتر هموارتر می کنند. به همین خاطر سازندگان اصلی هارددیسک در دنیا با هم توافق کرده اند که از ژانویه ۲۰۱۱ تمام هارددیسک های ساخته شده در دنیا سکتورهای ۴k داشته باشند. بدلیل ناسازگاری سیستم عامل قدیمی با سیستم Advanced Format Disk مبحث Sector Emulation مطرح می شود که این موضوع و Partition_Offset باعث سربار اضافی به سیستم خواهد داشت و نیاز است partition alignment مورد توجه و اصلاح قرار گیرد. برای مطالعه بیشتر به لینک های ذیل مراجه شود https://technet.microsoft.com/en-us/library/dd758814%28v=sql.100%29.aspx https://www.mssqltips.com/sqlservertip/2119/partition-offset-and-allocation-unit-size-of-a-disk-for-sql-server/ http://www.digicast.ir/?p=302 چه رتبه ای میدهید؟ میانگین ۰ / ۵. از مجموع ۰ اولین نفر باش برچسب ها # SQL Server# آموزش Performance Tuning در SQL Server# آموزش SQL Server# پارتیشن بندی# هارد دیسک سرور معرفی نویسنده معرفی محصول مسعود طاهری دوره آموزشی Performance Tuning در SQL Server (گروه 15) ثبت نام حضوری8.700.000 تومانثبت نام غیرحضوری5.700.000 تومان مقالات مرتبط ۰۳ خرداد مهندسی نرم افزار چالش های مدرن سازی معماری نرم افزار و راهکارهای آن علیرضا ارومند ۲۴ اردیبهشت مهندسی نرم افزار مدرن سازی معماری نرم افزار علیرضا ارومند ۱۹ اردیبهشت هوش تجاری بهبود عملکرد Tabular Model در SQL Server با سه تکنیک کاربردی مسعود طاهری ۱۰ اردیبهشت SQL Server استفاده از Credential و Proxy در SQL Server Agent حسن سلیمانی دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ mehdi $o$er ۲۵ / ۱۲ / ۹۴ - ۱۰:۱۶ جالب بود لطفا مباحث بیشتری در این خصوص قرار بدید پاسخ به دیدگاه mehdi $o$er ۲۵ / ۱۲ / ۹۴ - ۱۰:۱۶ جالب بود لطفا مباحث بیشتری در این خصوص قرار بدید پاسخ به دیدگاه سید سیاوش گلچوبیان ۱۸ / ۱۱ / ۹۴ - ۰۱:۴۵ سلاممقاله بسیار جالبی بود، همچنین مقاله ای که در 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/ پاسخ به دیدگاه سید سیاوش گلچوبیان ۱۸ / ۱۱ / ۹۴ - ۰۱:۴۵ سلاممقاله بسیار جالبی بود، همچنین مقاله ای که در 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/ پاسخ به دیدگاه Hamid J. Fard ۰۳ / ۱۱ / ۹۴ - ۰۶:۲۷ مقاله بسیار جالبی بود. بنده شخصا از دیسکهای ۴ک اطلاعی نداشتم. البته یک موضوع هم است که برای محیط SQL Server مقدار Allocation Unit به ۶۴ کیلوبایت برای ذخیره سازی داده ها تعیین شود اگر بیشتر از این باشد داده های بیشتری به حافظه باز گردانده می شود که این باعث استفاده بیش از حد Buffer Pool است. خیلی عالی بود. پاسخ به دیدگاه سید سیاوش گلچوبیان ۲۱ / ۱۱ / ۹۴ - ۱۱:۰۹ مگر امکان تخصیص Allocation Unit Size به مقدار بیش از ۶۴K در Windows وجود دارد ؟ پاسخ به دیدگاه مسعود طاهری ۲۱ / ۱۱ / ۹۴ - ۰۱:۰۵ سلام در NTFS تا ۶۴KB اما Strip Size مربوط به RAID را می توان بیشتر نیز تعریف کرد. قطعا به این لینک ها طی بررسی هاتون هم رسیدید https://technet.microsoft.com/en-us/library/dd758814(v=sql.100).aspx http://www.sqlservercentral.com/blogs/sqlmanofmystery/2010/01/04/fundamentals-of-storage-systems-stripe-size-block-size-and-io-patterns/ http://www.sqlservercentral.com/Forums/Topic1135411-391-1.aspx پاسخ به دیدگاه Hamid J. Fard ۰۳ / ۱۱ / ۹۴ - ۰۶:۲۷ مقاله بسیار جالبی بود. بنده شخصا از دیسکهای ۴ک اطلاعی نداشتم. البته یک موضوع هم است که برای محیط SQL Server مقدار Allocation Unit به ۶۴ کیلوبایت برای ذخیره سازی داده ها تعیین شود اگر بیشتر از این باشد داده های بیشتری به حافظه باز گردانده می شود که این باعث استفاده بیش از حد Buffer Pool است. خیلی عالی بود. پاسخ به دیدگاه سید سیاوش گلچوبیان ۲۱ / ۱۱ / ۹۴ - ۱۱:۰۹ مگر امکان تخصیص Allocation Unit Size به مقدار بیش از ۶۴K در Windows وجود دارد ؟ پاسخ به دیدگاه مسعود طاهری ۲۱ / ۱۱ / ۹۴ - ۰۱:۰۵ سلام در NTFS تا ۶۴KB اما Strip Size مربوط به RAID را می توان بیشتر نیز تعریف کرد. قطعا به این لینک ها طی بررسی هاتون هم رسیدید https://technet.microsoft.com/en-us/library/dd758814(v=sql.100).aspx http://www.sqlservercentral.com/blogs/sqlmanofmystery/2010/01/04/fundamentals-of-storage-systems-stripe-size-block-size-and-io-patterns/ http://www.sqlservercentral.com/Forums/Topic1135411-391-1.aspx پاسخ به دیدگاه مهدی ربانی ذبیحی ۰۱ / ۱۱ / ۹۴ - ۰۷:۰۲ ممنون بسیار عالی بود منتظر مقاله های بیشتر شما تو این زمینه هستیم پاسخ به دیدگاه مهدی ربانی ذبیحی ۰۱ / ۱۱ / ۹۴ - ۰۷:۰۲ ممنون بسیار عالی بود منتظر مقاله های بیشتر شما تو این زمینه هستیم پاسخ به دیدگاه