آموزش نگهداری از 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 Index Manager یک ابزار رایگان برای مدیریت ایندکس های sql server است که به صورت رایگان و اوپن سورس ارائه شده است. از ویژگیهایی که این ابزار دارد میتوان به موارد زیر اشاره کرد:
- موتور سریع
- قابلیت اسکن کردن چند دیتابیس
- قابلیت پیشنهاد برای بازسازی و یا سازماندهی ایندکس
- آنالیز fragmentation ایندکس ها
- نمایش نموداری fragmentation ها
- قابلیت نگهداری ایندکس های column store
- پیدا کردن ایندکس های تکراری
- پیدا کردن و حذف کردن ایندکس های بلااستفاده
- قابلیت خروجی گرفتن به فرمت های excel, csv, html, txt
- و بسیاری از موارد دیگر.
تصویر زیر صحه این ابزار را نشان می دهد.
این ابزار را میتوانید از این لینک به صورت رایگان دانلود و استفاده کنید. با وب سایت tosinso همراه باشید
سلام به شما دوست عزیز
نحوه استفاده ازش به این شکله که فایل Release رو دانلود کنید و بعد از دانلود برنامه exe رو باز کنید و ازش استفاده کنید.
فایلش چه خطایی میده؟
اگر مشکل خود فایل هست که دوباره دانلود کنید و اگر مشکل چیز دیگه هستش که متن خطا یا عکس خطا رو توی پست قرار بدید.
چطور ازش استفاده کنم؟؟؟
دانلود کردم اما فایلش خطا داره