آخرین فرصت تا %60 تخفیف خرید یکجای دوره ها برای 4 نفر فقط تا
00 00 00

نگهداری از ایندکس های Sql server

در مطلب قبلی در مورد انواع ایندکس ها و تفاوت آن‌ها صبحت کردیم. استفاده از  ایندکس ها به این شکل نیست که بر روی داده‌ها ایندکس گذاری کنیم و کار تمام شود و تا قیامت ایندکس ها باعث بالا رفتن سرعت کوئری ها بشود. بعد از مدتی حذف و درج و آپدیت کردن ساختار یکپارچه ای که ابتدا برای ایندکس ها تشکیل شده بود به هم میریزد و در درخت ساخته شده خلاء هایی به وجود می‌آید که به این نامنظمی ایندکس ها اصطلاحاً 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 همراه باشید

نویسنده: مهدی عادلی فر

منبع: جزیره بانک های اطلاعاتی Tosinso.

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر