آموزش نگهداری از index های SQL سرور ، در مطلب قبلی در مورد انواع ایندکس ها و تفاوت آنها صبحت کردیم. استفاده از ایندکس ها به این شکل نیست که بر روی دادهها ایندکس گذاری کنیم و کار تمام شود و تا قیامت ایندکس ها باعث بالا رفتن سرعت کوئری ها بشود. بعد از مدتی حذف و درج و آپدیت کردن ساختار یکپارچه ای که ابتدا برای ایندکس ها تشکیل شده بود به هم میریزد و در درخت ساخته شده خلاء هایی به وجود میآید که به این نامنظمی ایندکس ها اصطلاحاً fragmentation یا پارگی (این هم شد ترجمه!) میگویند. پس نتیجه میگیریم که ایندکس ها هم نیاز به نگهداری و مراقبت دارند. یکی از کارهای مدیر دادهها این است که ایندکس ها را هر وقت که لازم بود بهینه کند و با بازسازی ساختار ایندکس ها این شرایط fragmentation را از بین ببرد. برای اینکه بفهمیم یک ایندکس تا چه حد دچار fragmentation شده است میتوانیم از کوئری زیر استفاده کنیم.
SELECT
OBJECT_SCHEMA_NAME(i.object_id),
OBJECT_NAME(i.object_id),
*
FROM
sys.dm_db_index_physical_stats(NULL,NULL,NULL,NULL,NULL) ips
JOIN
sys.indexes i ON ips.OBJECT_ID = i.OBJECT_ID AND ips.index_id = i.index_id
کوئری بالا نام ایندکس و درصد fragmentation را برای هر ایندکس نمایش میدهد و میتوانید که هر کدام از ایندکس ها را که درصد fragmentation آنها بالا است را بازسازی یا rebuild کنید. برای ایندکس هایی که درصد fragmentation آنها بالا نیست میتوان عمل reorganize انجام داد. یعنی آنها را از ابتدا بازسازی نکرد و فقط سازماندهی آنها را بهتر کرد یعنی فقط برگهای درخت B-tree را سازماندهی میکند نه کل درخت، که تا حدودی در سرعت تأثیر داشته باشند.کوئری مربوط به بازسازی ایندکس های یک جدول به شکل زیر است:
ALTER INDEX ALL ON Production.Product REBUILD
دقت داشته باشید که product نام جدول است. همچنین کوئری مربوط به سازماندهی ایندکس های یک جدول نیز در ادامه آورده شده است:
ALTER INDEX ALL ON Production.Product REORGANIZE
دقت کنید که این کارها باید به صورت دوره ای انجام شود تا performance سیستم حفظ شود.
اگر شما هم مانند من یکی از اشخاصی باشید که دوست دارید دادههای آماری را به شکل مصور و نموداری ببینید شاید این سؤال برای شما پیش آمده باشد که آیا ابزاری وجود دارد که بتواند این دادههای مربوط به ایندکس های دیتابیس را نیز به شکل نمودار نشان دهد و به جای نوشتن و اجرای کوئری های گفته شده و چند کوئری گفته نشده بتواند به صورت ویژوال و با چند تا کلیک کارمان را انجام دهد؟ بله چنین ابزاری وجود دارد. SQL Index Manager یک ابزار رایگان برای مدیریت ایندکس های sql server است که به صورت رایگان و اوپن سورس ارائه شده است. از ویژگیهایی که این ابزار دارد میتوان به موارد زیر اشاره کرد:
تصویر زیر صحه این ابزار را نشان می دهد.
این ابزار را میتوانید از این لینک به صورت رایگان دانلود و استفاده کنید. با وب سایت tosinso همراه باشید
بنیانگذار توسینسو و برنامه نویس
مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود