خانه / مقالات / بانک اطلاعاتی / SQL Server / آموزش Columnstore – قسمت دوم
آموزش Columnstore

آموزش Columnstore – قسمت دوم

Clustered Columnstore Indexes – part 2 (“Internals”)

Tuple Mover:

در حالیکه ما ردیفهای جدید را به یک جدول اضافه میکنیم به همین ترتیب Delta Store)، در برخی از نقاط خاص (۱٫۰۰۰٫۰۰۰ ردیف برای یک درج طبیعی، ۱۰۰٫۰۰۰ ردیف برای یک Bulk insert) ما باید یک نقطه را هنگامی که یک Stores Delta پر شود باید برای هر داده اضافه اضافی بسته شود.

SQL Server یک فرایند پس زمینه خودکار دارد که برای ذخیره closed Delta Stores  (وضعیت = ۲) چک می شود، پس بعد از پیدا کردن آن یک Segment   را از آن با رمزگذاری و فشرده سازی ایجاد می کند. این فرایند پس زمینه Tuple Mover نامیده می شود و به طور پیش فرض هر ۵ دقیقه اجرا می شود. Tuple Mover طراحی شده است که هر اسکن خواندن داده ها را مسدود نکند اما همزمان حذف می شود و به روز رسانی باید صبر کند تا فرآیند فشرده سازی کامل شود. من فکر می کنم که این نباید یک مسدود کننده بزرگ باشد زیرا ما درباره سیستم های OLTP صحبت نمی کنیم.

توجه: در حقیقت، ) Segment گروه ردیف) قبلا فشرده شده را می توان با ردیف های اضافی، در صورتی که به حداکثر تعداد ردیف ها (حدود ۱ میلیون) رسیده است، در هنگام بازسازی جدول به روزرسانی می شود.

توجه: همیشه می توانید Tuple Mover را با اجرای alter index … reorganize مجدد فراخوانی کنید

اعمال اظهارات بعد، تمام جدول را بازسازی می کند و از این رو Tuple Mover را فراخوانی نمی کند:

alter table … rebuild

or
alter index … rebuild.

 

Bulk Insert :

من بسیار خوشحالم که مایکروسافت پشتیبانی خوبی برای عملیات Bulk Insert میکند که برای هر محیط DatawareHousing ضروری است.

عملیات Bulk Insert با توجه به تعداد ردیف های وارد شده متفاوت عمل می کند. ۱۰۰٫۰۰۰ ردیف محدودیت جداسازی است بنابراین می توان گفت که اگر ما ۸۵٫۰۰۰ ردیف قرار دهیم پس باید آنها را اضافه کنیم به ایجاد شده ها یا به یک Delta Store,  جدید اضافه کنیم اما اگر ما ۱۲۰٫۰۰۰ ردیف قرار دهیم پس باید به طور خودکار به یک Segment (Row Group) تبدیل شود. تعداد ایدآل  از ردیف های اضافه شده بیش از ۱ میلیون خواهد بود، زیرا به طور خودکار به یک بخش غیر قابل ارتقا و کامل تبدیل می شود.

 

این عملیات بسیار کارآمد است زیرا تمام ردیف های وارد شده در حافظه را ذخیره می کند و رمزگذاری و فشرده سازی حافظه را اعمال می کند و تنها پس از فرآیند خاتمه می یابد و سپس آن داده ها را روی دیسک ذخیره می کند. الزامات طبیعی برای این عمل برای موفقیت با ، داشتن حافظه کافی است

توجه: insert into … select from …; بیانیه برای SQL Server 2014 بهینه سازی شده است برای استفاده از bulk insertion  با parallel batch mode execution.

 

Isolation Levels :

طبق گفته مایکروسافت در حال حاضر تمام سطوح isolation  ، به جز Snapshot، برای استفاده با

Clustered Columnstore Indexes اجرا و پشتیبانی می شوند. این به این معنی است که isolation levels  زیر پشتیبانی می شود:

READ UNCOMMITTED,     READ COMMITTED,              REPEATABLE READ       , SERIALIZABLE                                                                                                       .

همچنین پشتیبانی می شود  از READ_COMMITED_SNAPSHOT

 

Locking :

Locking  کردن در شرایط Clustered Columnstore Indexes  در سطح صفحه انجام می شود، اما من با این تفاوت موافق نیستم زیرا با آزمایش های من دیده ام که حتی عملیات ساده  IX (Intent Exclusive) or X (Exclusive) lock  در گروه Row مربوطه (نیز به Delta Store  برای درج) نیز اعمال می شود که به عنوان نتیجه جلوگیری از خواندن داده ها از آن است.

 

  • آیا این مقاله مفید بود؟
  • بله   خیر

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد.