PDA

View Full Version : هر چیزی راجع به گزینه Fill Factor , Pad Index در NewIndex->Options



mohamadmahmodi
سه شنبه 08 اردیبهشت 1394, 17:33 عصر
درود به همه
در مبحث ایندکس گذاری ، وقتی که با کلیک راست NewIndex را انتخاب می کنیم ؛ در صفحه ظاهر شده دو گزینه با عناوین: Fill Factor , Pad Index هست؛
می خواستم بدونم به چه دردی میخوره ؟ و در کجا استفاده میشه ؟
تشکر از همه130729

tooraj_azizi_1035
چهارشنبه 09 اردیبهشت 1394, 09:12 صبح
سلام

Fill Factor درصدی از فضای یک Page است که SQL Server هنگام ذخیره سازی اولیه رکورد ها تا آن میزان پیشروی می کند و بقیه صفحه را برای استفاده در آینده خالی نگه می دارد تا Fragmentation که ناشی از Page Split است را به حداقل برساند.

Fill Factor یک راهکار برای کاهش بروز Page Split است که باعث بالا رفتن I/O و همچنین پایین آمدن میزان همزمانی می شود. از آنجایی که رکوردها در یک جدول دارای Index باید مرتب ذخیره شوند SQL Server باید مکان صحیح (Page صحیح) درج رکورد را بیابد و اگر در Page مربوطه فضای کافی برای درج رکورد وجود نداشته باشد SQL Server حدود 50% از رکوردهای این Page را به Page جدید (سمت راست ترین نود ایندکس) منتقل می کند و البته اگر بازهم فضای کافی فراهم نشود نیاز به انتقال رکوردهای بیشتر و احتمالاً ایجاد Page های جدید بیشتر خواهد بود.
کاهش میزان همزمانی (تعداد تراکنش هایی که در ثانیه اجرا می شوند) هم به دلیل قفل کردن این Page ها در هنگام بروز Page Split است که از آن به عنوان Latch Contention یاد می شود. Latch یک ساختار هماهنگ کننده است که SQL Sever برای هماهنگی دسترسی Thread ها از آن استفاده (فقط توسط SQL Server می تواند به کار گرفته شود) می کند.

و در مورد PadIndex اینکه اگر ON باشد، درصد مشخص شده FillFactor فقط برای سطوح میانی ایندکس (Intermediate Level) اعمال می گردد. و اگر OFF باشد به اندازه یک رکورد از ایندکس فضای خالی در Page رزرو می شود و بقیه آن می تواند استفاده شود.

mohamadmahmodi
جمعه 12 تیر 1394, 15:30 عصر
خیلی ممنون از پاسخ و زحمت شما
کاملاً متوجه شدم اما یک سوال:
از کجا بدونیم زمان rebuild کردن فرا رسیده و دستور مقدار درصد Fill Factor رو هنگام rebuild بفرمایید؟تشکر

tooraj_azizi_1035
شنبه 13 تیر 1394, 10:53 صبح
اگر میزان پراکندگی ایندکس بین 10 تا 30 درصد باشد باید REORGANIZE کنید و بیش از 30 درصد REBUILD.
میزان Fill Factor وابسته به شدت تغییرات مقادیر یک ستون است اگر مطمئن باسیم که همیشه مقداری پیش رونده داریم یعنی یک ستون Identity در اینصورت مقدار 0 مناسب است اما اگر مقادیر به شکل تصادفی درج می شوند و یا دستخوش تغییرات زیاد هستند 50 درصد می تواند مقدار مناسبی باشد (گرچه این عدد بستگی به شدت تغییرات دارد) اما در عین حال این مقدار رو کمی دست بالا بگیرید.