PDA

View Full Version : Fill Factor



RK977877
یک شنبه 01 مهر 1386, 13:50 عصر
با سلام و خسته نباشید
ببخشید زمانی که یه جدول را طراحی میکنیم Fill Factor باید چقدر باشد
برای جداول با حجمهای بالاتر چقدر باشد
و نیز یه توضیح مختصر در مورد همین آیتم

AminSobati
یک شنبه 01 مهر 1386, 23:44 عصر
دوست عزیزم،
در صورتیکه جدول شدیدا تحت ویرایش قرار داره، بین 75 تا 80 درصد، و اگر ندرتا ویرایش میشه، 93 درصد خوبه

RK977877
دوشنبه 02 مهر 1386, 15:39 عصر
اگر صفر باشد چه اتفاقی می افتد

j.farazani
دوشنبه 02 مهر 1386, 20:52 عصر
سلام استاد sobati
میشه لطف کنید و بفرمایید اصلا این fill factor چیه . و چیکار میکنه؟
لطف میکنید

AminSobati
دوشنبه 02 مهر 1386, 23:14 عصر
- مقدار صفر معادل عدد 100، به معنی کامل Full هستش.

- Fill Factor مشخص میکنه در هنگام ساخت ایندکس، چند درصد از فضای Pageها با اطلاعات پر بشن. وقتی 90 درصد بدین، یعنی 10 درصد فضای خالی در Page در نظر گرفته میشه که رکوردهای آینده رو میتونن در خودشون جا بدن. اگر Pageها کاملا پر باشند، ورود رکورد جدید باعث سر ریز شدن Page میشه که اصطلاحا Split رخ میده. Split صرف نظر از هزینه IO، شدیدا باعث Fragment شدن اطلاعات میشه. البته 90 درصدی که موقع ساخت ایندکس مشخص میکنید، باعث نمیشه که "همیشه" 10 درصد فضای خالی باقی بمونه، چون به مرور زمان این 10 درصد هم توسط رکوردهای جدید اشغال میشه. لذا یکی از دلایل نیاز به Defrag کردن یا اصطلاحا Index Rebuild همین هست که Pageها مجددا سازماندهی بشن به نحوی که هم ترتیب درستی داشته باشند و هم Fill Factor مورد نظر اعمال بشه

e-shahshahani
جمعه 04 اردیبهشت 1388, 20:10 عصر
اگر در جدول چند تا فیلد داشته باشیم که ایندکس شده باشند و جدول هم هر روز رکورد بهش اضافه بشه. اونوقت این فیل فاکتور ها را باید چه جوری به فیلد ها اختصاص بدیم؟
ممنون میشم جواب بدین

AminSobati
جمعه 04 اردیبهشت 1388, 22:52 عصر
Fillfactor به فیلد اختصاص پیدا نمیکنه، بلکه متعلق به ایندکس هست. موقع ساخت یا Rebuild کردن ایندکس میشه عدد Fillfactor رو تعیین کرد

e-shahshahani
جمعه 04 اردیبهشت 1388, 23:35 عصر
آیا میشه فیل فاکتور را به تعدادی از ایندکس ها اعمال کرد یا باید دانه دانه اعمال کنیم؟

AminSobati
شنبه 05 اردیبهشت 1388, 08:20 صبح
سرور یک Default Fillfactor داره که وقتی موقع ساخت ایندکس اشاره ای به Fillfactor نکنید، ازش استفاه خواهد شد. پس همه ایندکسها Fillfactor دارند. در نسخه 2005 و بالاتر، میتونین با دستور ALTER INDEX تمام ایندکسهای یک جدول رو مجددا با Fillfactor جدید بسازید

e-shahshahani
شنبه 05 اردیبهشت 1388, 09:46 صبح
ببخشيد جسارتا سوال من چيز ديگري هست.
آیا میشه فیل فاکتور را به تعدادی از ایندکس ها به صورت گروهي اعمال کرد یا باید دانه دانه اعمال کنیم؟

AminSobati
شنبه 05 اردیبهشت 1388, 22:45 عصر
اگر ایندکسهای یک جدول باشند، یکجا میشه. اگر ایندکسهای جداول متنوع باشند، با یک دستور نمیشه