2- فشرده سازی در سطح Page یا (Page Level Compression)
در مبحث قبلی، فشرده سازی در سطح رکورد را بررسی کردیم. اما قبل از اینکه به بحث فشرده سازی در سطح Page بپردازیم لازم به ذکر یک مقدمه می باشد...!
فشرده سازی داده ها با استفاده از Token
لطفاً به دو جمله زیر دقت نمایید، و درباره چگونگی فشرده سازی آنها کمی فکر کنید. چگونه می توان با صرف حافظه ی کمتری آنها را ذخیره کرد..!؟
جملات
I would not like Them here or there
I would not Like Them anywhere
قصد داریم دو جمله بالا را با استفاده از Tokenها فشرده کنیم، یکی از بهترین انتخاب ها می تواند دو Token زیر باشد:
تعریف token
token 1 : I would not like Them
token 2 : here
حالا چطور از دو token بالا استفاده کنیم و جملات را فشرده کنیم؟ خیلی ساده، در دو جمله بالا، هر کجا که به Token 1 برخوردیم آنرا با شماره Token یعنی 1 جایگزین می کنیم، و این عمل را برای Token 2 نیز انجام می دهیم:
همانطور که در بالا مشاهده کردید دو جمله طولانی اول به دو جمله کوتاه تر تبدیل شدند. حالا که با روش فشرده سازی با استفاده از tokenها آشنا شدید، خیلی راحت تر می توان فشرده سازی در سطح Page را توضیح داد...!
مراحل فشرده سازی در سطح Page
مرحله 1: انجام فشرده سازی در سطح رکورد
مرحله 2: Prefix Compression یا پیش فشرده سازی
- اعمال فشرده سازی در سطح Column
- استخراج Token و ذخیره آن در CL (مخفف Compression Information)
- فشرده سازی فیلدها با استفاده از Token
مرحله 3: Dictionary Compression
- اعمال فشرده سازی در سطح کل Page
- استخراج Token و ذخیره آن در CL
- حذف داده های تکراری
چند نکته در مورد فشرده سازی داده ها (Data Compression)
- بیشترین تأثیر فشرده سازی بر روی داده های متنی است.
- تأثیر فشرده سازی بر روی داده های Encrypt شده ناچیز است.
- فشرده سازی، کاهش عملیات IO را درپی دارد.
- فشرده سازی افزایش ناچیز CPU Usage را درپی دارد.
مثال عملی فشرده سازی داده ها در سطح رکورد
مثال 1: نحوه ی تعریف جدول به نحوی که از مدل Page Level Compression تبعیت کند:
Page Level Compression
CREATE TABLE Page_Level_Compression
(
Code INT IDENTITY PRIMARY KEY,
Family NVARCHAR(700),
Name NVARCHAR(700)
)WITH (Data_Compression = PAGE)
مثال 2: فشرده سازی جدول موجود:
Page Level Compression
ALTER TABLE Table_name REBUILD WITH (Data_Compression = page)
در مثال بالا با استفاده از فرمان ALTER TABLE و عملیات REBUILD جدول با نام Table_name را با روش فشرده سازی در سطح Page، فشرده کرده ایم. توجه داشته باشید که تنها داده های جدول و ایندکس Clustered فشرده خواهد شد و روی ایندکس های NonClusteredتأثیری نخواهد داشت.
مثال 3: فشرده کردن یک ایندکس خاص از یک جدول:
Page Level Compression
ALTER INDEX Index_name ON DataBase_name.Table_name
REBUILD WITH(DATA_COMPRESSION=PAGE)
مثال 4: فشرده کردن کلیه ایندکس های یک جدول خاص:
Page Level Compression
ALTER INDEX ALL ON Sales.SalesOrderHeader
REBUILD WITH(DATA_COMPRESSION=PAGE)
در ادامه بحث Page Level Compression خواهید دید...!
با خرید جلسه 6 از بسته آموزشی "افزایش کارایی پایگاه داده" موارد زیر را خواهید دید:
- با یک مثال عملی، تأثیر Page Level Compression بر روی کارایی پایگاه داده را نشان خواهیم داد.
- چگونه با استفاده از تابع dm_db_index_physical_stats لیست کلیه جداول و ایندکس های فشرده را بدست آوریم.
- بدون نوشتن کوئری چگونه فشرده سازی را انجام دهم (از طریق کنسول SQL Server)؟
دسترسی به موارد آموزشی بالا در بسته خریداری شده
- شماره جلسه: 6
- نام فایل ویدئو: 02
- فرمت فایل: mp4.
نقطه شروع بحث بالا (Page Level Compression) در ویدئو: 7:26
برای خرید و دانلود کاملآموزش پیشرفته SQL Server کلیک کنید.
READ MORE