تخفیف های ویژه عیدانه توسینسو
تا 60 درصد تخفیف ویژه
00ساعت 00دقیقه 00ثانیه

آیا 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 ها در همه مواقع به درد ما نمی خورند.

عنوان
1 آیا NonClustered Columnstore Index گزینه مناسبی است؟ رایگان
2 مقایسه فنی Stream Aggregate و Hash Match رایگان
3 بهینه سازی بازدهی پایگاه داده SQL Server با Hypothetical Index رایگان
4 بازیابی داده های سالم از پایگاه داده خراب رایگان
5 تغییر در Optimizer Engine برای غیر فعال کردن مرتب سازی JOIN ها رایگان
6 اهمیت اجراء دستور DBCC CheckDB قبل از گرفتن فایل پشتیبان رایگان
7 اهمیت استراتژی پشتیبانگیری و بازیابی پایگاه داده در SQL Server رایگان
8 محدودیتهای بازدهی و راه حل آنها در SQL Server رایگان
9 مستلزمات برای طراحی Index در SQL Server رایگان
زمان و قیمت کل 0″ 0
0 نظر

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

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

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....