مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

چگونه از ایندکس های SQL نگهداری کنیم؟ معرفی SQL Index Manager

آموزش نگهداری از index های SQL سرور ، در مطلب قبلی در مورد انواع ایندکس ها و تفاوت آن‌ها صبحت کردیم. استفاده از  ایندکس ها به این شکل نیست که بر روی داده‌ها ایندکس گذاری کنیم و کار تمام شود و تا قیامت ایندکس ها باعث بالا رفتن سرعت کوئری ها بشود. بعد از مدتی حذف و درج و آپدیت کردن ساختار یکپارچه ای که ابتدا برای ایندکس ها تشکیل شده بود به هم میریزد و در درخت ساخته شده خلاء هایی به وجود می‌آید که به این نامنظمی ایندکس ها اصطلاحاً fragmentation یا پارگی (این‌ هم شد ترجمه!) می‌گویند. پس نتیجه می‌گیریم که ایندکس ها هم نیاز به نگهداری و مراقبت دارند. یکی از کارهای مدیر داده‌ها این است که ایندکس ها را هر وقت که لازم بود بهینه کند و با بازسازی ساختار ایندکس ها این شرایط fragmentation را از بین ببرد. برای اینکه بفهمیم یک ایندکس تا چه حد دچار fragmentation شده است می‌توانیم از کوئری زیر استفاده کنیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
سرفصل های این مطلب
  1. ابزار SQL Index Manager
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
  • و بسیاری از موارد دیگر.

تصویر زیر صحه این ابزار را نشان می دهد.

چگونه از ایندکس های SQL نگهداری کنیم؟ معرفی SQL Index Manager

این ابزار را می‌توانید از این لینک به صورت رایگان دانلود و استفاده کنید. با وب سایت tosinso همراه باشید


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات