Sparse Column و تأثیر آن بر کارایی SQL Server

یکی دیگر از عواملی که در افزایش کارآیی و سرعت بانک اطلاعاتی موثر است، Sparse Column می باشد.

Sparse Column از نسخه 2008 به بعد به SQL Server اضافه شده است.

قبل از اینکه Sparse Column را توضیح دهیم اجازه دهید تا مقدمه ای را در مورد مقدار NULL داشته باشیم.


آشنایی با Null در SQL Server

  1. NULL بمعنی پوچ است.
  2. به مقدار Null در ظاهر، فضایی اختصاص نمی یابد اما هنگام قرار گرفتن در Pageها برای خود فضا در نظر می گیرد.
  3. کار کردن با مقادیر Null پیچیده است.

چرا کار کردن با مقدار Null پیچده است؟ لطفاً به مثال های زیر توجه فرمایید:

در کوئری زیر، روش های مختلف جستجوی روی مقدار Null را مشاهده می کنید، کدام مورد صحیح است؟

BackUp گیری بدون فشرده سازی

SELECT * FROM T1 WHERE A = NULL
GO
SELECT * FROM T1 WHERE A <> NULL
GO
SELECT * FROM T1 WHERE A IS NULL
GO
SELECT * FROM T1 WHERE A IS NOT NULL

بصورت پیشفرض A = NULL و A <> NULL نتیجه ای را برنمی گرداند و اگر قصد داریم رکوردهایی که Null اند را پیدا کنیم باید از Is NULL استفاده کنیم و یا برای رکوردهایی که مخالف Null اند و در واقع حتماً مقدار دهی شده اند باید از IS NOT NULL استفاده شود.

آیا راه حلی برای رفع مشکل بالا وجود دارد؟

راه حل؟

برای اینکه روش های A = NULL و A <> NULL قابل استفاده در قسمت where باشد می توان از فرمان زیر استفاده نمود:

تنظیم  گزینه ANSI_NULLS  با مقدار OFF

SET ANSI_NULLS OFF

توجه: برنامه نویسان به دلیل اینکه درگیر مشکلات مدیریت NULL نشوند به جای آن ترجیح می دهند از مقادیر ثابت استفاده کنند.


ماتریس Sparse چیست؟

ماتریس Sparse، ماتریسی است که دارای بیشترین عنصر صفر باشد.

0 0 6 0
5 0 0 4
4 0 0 0
0 0 9 1

Sparse Column چیست؟

زمان تعریف فیلدهای جدول، یک ویژگی با نام "Is Sparse" وجود دارد که تنها برای فیلدهای از نوع Allow Nulls قابل فعال کردن است:

مزایای فعال کردن گزینه Is Sparse

  1. با فعال کردن گزینه Is Sparse، برای ذخیره مقدار NULL از فضا بصورت بهینه استفاده خواهد شد و فضای ذخیره سازی کاهش خواهد بافت.
  2. همچنین با فعال کردن گزینه Is Sparse، عملیات IO کاهش خواهد یافت و سرعت افزایش می یابد.

معایب فعال کردن گزینه Is Sparse

  1. به ازای فیلدی که گزینه Is Sparse برای آن فعال شده است، یک افزایش فضای 4 بایتی جهت ذخیره مقادیر غیر NULL در نظر گرفته خواهد شد. بعنوان مثال اگر فیلد ایمیل از نوع varchar باشد و کاربر 20 کاراکتر وارد کند، نهایتاً 24 کاراکتر فضا اشغال خواهد شد.
  2. تنها برای فیلدهای از نوع Allow Null می توان گزینه Is Sparse را فعال نمود.
  3. فیلدی که گزینه Is Sparse آن فعال شده است، نمی تواند برای آن مقدار پیشفرض (Default Value) تعیین نمود.
  4. گزینه ی Is Sparse را برای فیلدهای از نوع Computed Column نمی توان فعال نمود.
  5. فیلدی که گزینه Is Sparse آن فعال شده است را نمی توان به عنوان کلید Clusterd Index تعریف نمود.

مثال عملی Sparse Column

مثال 1: در مثال زیر فیلدهای D1 و D2 و D3 از نوع Sparse Column هستند:

فعال کردن قابلیت Sparse Column

CREATE TABLE Student_Sparsed
(
    CODE   INT,
    F_NAME NVARCHAR(50),
    L_NAME NVARCHAR(50),
    D1 CHAR(1000) SPARSE,
    D2 CHAR(1000) SPARSE,
    D3 CHAR(1000) SPARSE
)

در ادامه بحث Sparse Column خواهید دید...!

با خرید جلسه 6 از بسته آموزشی "افزایش کارایی پایگاه داده" موارد زیر را خواهید دید:

  1. چه Data Type هایی را نمی توان به عنوان Sparse Column تعریف نمود.
  2. چگونه Sparse Column باعث افزایش کارایی و سرعت بانک اطلاعاتی می شود؟
  3. آیا فیلد ایمیل که در 50 درصد موارد توسط کاربران خالی رها می شود، می تواند بعنوان کاندیدی برای Sparse Column تعریف شود؟

دسترسی به موارد آموزشی بالا در بسته خریداری شده

  • شماره جلسه: 6
  • نام فایل ویدئو: 03
  • فرمت فایل: mp4.

نقطه شروع بحث بالا (Sparse Column) در ویدئو:  7:15


برای خرید و دانلود کاملآموزش پیشرفته SQL Server کلیک کنید.

READ MORE