تا %60 تخفیف خرید برای 5 نفر با صدور مدرک فقط تا
00 00 00
با توجه به مسدود بودن IP های خارج از ایران در سامانه شاپرک، برای خرید از وب سایت حتماً فیلترشکن خود را خاموش و از IP ایران استفاده کنید.
در توسینسو تدریس کنید

آیا NonClustered Columnstore Index گزینه مناسبی است؟

در ماه جولای یک ایمیل دریافت کردم به این مضمون که « ما در حال حاضر از سیستم OBIEE بر روی سرور اصلی استفاده می کنیم که پایگاه داده آن روی SQL Server 2012 است. استفاده از این سیستم فقط برای برخی از گزارشات است. از هفته گذشته سرعت تولید این گزارشات بسیار پایین آمده به صورتی که قبلا چند ثانیه به طول می انجامید اما در حال حاضر به بیش از ۳۰ دقیقه به طول می انجامد. در این مدت استفاده از Tempdb بسیار بالا رفته و پیغام خطای زیر در فایل خطاها به مکرر مشاهده می شود. نیاز به کمک شما دارم. با تشکر کارن. »

Process 101:0:37 (0x312c) Worker 0x0000003F9BB32160 appears to be non-yielding on Scheduler 16. Thread creation time: 13081251676778. Approx
Thread CPU Used: kernel 0 ms, user 130703 ms. Process Utilization 77%. System Idle 21%. Interval: 130718 ms.
SQL Server has encountered 1587 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [S:\tempdb.mdf] in database [tempdb] (2). The OS file handle is 0x0000000000001248. The offset of the latest long I/O is: 0x000022ec640000

من در لحظه اول که این پیغام های خطا و استفاده بیش از حد tempdb را متوجه شدم به استفاده از NonClustered Columnstore Index شک کردم که کاهش بازدهی سیستم به دلیل داشتن این گونه ایندکس ها است. شک من به دلیل عملیات داخلی این نوع ایندکسها بود.

Execution Plan

همانطور که در تصویر بالا مشاهده می کنید:

  1. دو عدد Table Spool وجود دارد که باعث استفاده از Tempdb می شود.
  2. دو عدد Nested Loops را می بینیم که تماما هیچ Predicate برای آن تعریف نشده.
  3. یک عدد Filter را می بینیم که داده های ورودی را فیلتر می کند.

در مرحله دوم یک نگاهی به اندازه داده های ورودی و خروجی در هر عملیات انداختم و متوجه شدم که Table Spool داده ای به اندازه 2081KB را به Nested Loop واگذاری می کند و Nested Loop داده ای به اندازه 749MB را به Hash Match واگذاری می کند که در آخر خروجی این عملیات یک رکورد به اندازه 25B است. بعد از آنالیز و بررسی فاکتورهای دیگر در آخر بنده به کارن پیشنهاد تغییر NonClustered Columnstore Index ها به Clustered B-Tree یا NonClustered B-Tree ایندکسها را دادم.جدیدا ایمیلی از ایشان دریافت کردم که تغییرات پیشنهاد داده شده مشکل سرعت سیستم را از بین برده به گزارشات در چند ثانیه تولید می شوند. نکته : ColumnStore Index ها در همه مواقع به درد ما نمی خورند.

نظر شما
برای ارسال نظر باید وارد شوید.
0 نظر

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