آموزش پیشرفته SQL Server (جلسه هفتم) - پارتیشن بندی در SQL Server

پارتیشن بندی در SQL Server، قسمتی از آموزش پیشرفته SQL Server است، پیشنهاد می شود قبل از مطالعه ی پارتیشن بندی در SQL Server، قسمت های قبلی را مرور فرمایید.


پارتیشن بندی در SQL Server

پارتیشن بندی یا Data Partitioning یکی از قابلیت های بانک اطلاعاتی است.

پارتیشن بندی در SQL Server 2005 اضافه شد و در نسخه های بعدی قابلیت های آن گسترش داده شده است.

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

برای استفاده از قابلیت پارتیشن بندی، به کد نویسی سمت Application نیاز نیست.

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

در SQL Server 2012 و SQL Server 2014 هر جدول می تواند به تعداد 15.000 عدد پارتیشن داشته باشد.

مثال: در شکل زیر، داده ها بر اساس سال پارتیشن بندی شده است:

  1. پارتیشن 1: کوچکتر از 2003
  2. پارتیشن 2: بین 2003 و 2004
  3. پارتیشن 3:بین 2004 و 2005
  4. پارتیشن 4: بزرگتر از 2005


سطوح مختلف پارتیشن بندی

پارتیشن بندی شامل سه سطح زیر است:

سطح 1: داده: Data یا داده هایی که عملیات پارتیشن بندی روی آنها اتفاق می افتد.

سطح 2: Partition Function: تابع پارتیشن، فیلدی که براساس آن پارتیشن بندی ایجاد می شود را مشخص می نماید.

سطح 3: Partition Scheme: محل ذخیره سازی هر کدام از پارتیشن ها را مشخص می کند.


مراحل پارتیشن بندی در SQL Server

از دو دید مختلف می توان مراحل پارتیشن بندی را بررسی نمود:

  1. از دید پیاده ساز (Developer)
  2. از دید مدیر بانک اطلاعاتی (DataBase Admin)

در زیر به بررسی هر کدام از موارد بالا خواهیم پرداخت.


1- مراحل پارتیشن بندی در SQL Server از دید Developer

ایجاد پارتیشن بندی از دید Developer، شامل دو مرحله زیر است:

مرحله 1: مشخص کردن کلید پارتیشن یا Partition Key

مرحله مشخص کردن Partition Key یکی از مهمترین قسمت های پارتیشن بندی است و باید فیلدی را بعنوان کلید پارتیشن بندی انتخاب نمایید که بر اساس آن جستجوی بیشتری انجام می شود. بعنوان مثال، سیستم مالی را در نظر بگیرید. یکی از فرم های این سیستم ایجاد سند است، در جداول مربوط به این فرم، آیا فیلد تاریخ می توان یک کاندید مناسب برای Partition Key باشد؟

نکته ی دیگری که در این انتخاب باید به آن توجه فرمایید این است که اگر تاریخ را بعنوان Partition Key انتخاب نمودید، از اینجا به بعد برای رسیدن به بهترین کارآیی، در تمام کوئری های جستجو باید فیلد تاریخ حضور داشته باشد. بنابراین شاید مجبور باشید با یک سیاست خاص کاربران سیستم را متقاعد کنید که در فرم های جستجو حتماً فیلد تاریخ را تنظیم نمایند.

مرحله 2: تعیین تعداد پارتیشن ها

با توجه به حجم داده ها و همچنین میزان پیشرفت شان باید یک تخمین صحیح از تعداد پارتیشن های مورد نیاز بزنید. بعنوان مثال اگر کلید پارتیشن بندی بر اساس تاریخ باشد، آیا تعداد پارتیشن بر اساس سال باشد یا ماه؟ مثلاً اگر تعداد رکوردهای درج شده در یک ماه بالای 30.000.000 باشد، پارتیشن بندی براساس ماه گزینه مناسب تری خواهد بود.

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


2- مراحل پارتیشن بندی در SQL Server از دید مدیر بانک اطلاعاتی

حالا که بصورت دقیق، کلید پارتیشن و تعداد پارتیشن مشخص شد نوبت به انجام کارها توسط مدیر بانک اطلاعاتی است.

مرحله 1: ایجاد File Group

معمولاً به ازای هر پارتیشن یک File Group ایجاد می شود. اما چند پارتیشن و یا حتی تمام پارتیشن ها را نیز می توان در یک File Group قرار داد.

مرحله 2: مشخص کردن Partition Function

با استفاده از Partition Function می توان محل قرار گیری رکوردها را در یک Partition مشخص نمود. در واقع Partition Function نقاط مرزی برای تقسیم داده ها را تعیین می کند.

نحوه ی ایجاد Partition Function:

ساختار Partition Function

CREATE PARTITION FUNCTION partition_function_name ( input_parameter_type )
AS RANGE [ LEFT | RIGHT ]
FOR VALUES ( [ boundary_value [ ,...n ] ] )

برای کسب اطلاعات بیشتر به لینک روبرو مراجعه فرمایید: partition Function

پارامترها:

پارامتر توضیح
partition_function_name

نام Partition Function را تعیین می کند، توجه داشته باشید که نام Partition در کل بانک اطلاعاتی باید منحصر به فرد باشد.

input_parameter_type

نوع داده ای که پارتیشن بندی بر اساس آن انجام می شود را تعیین می کند.

توجه: این پارامتر با تمام انواع داده بغیر از موارد زیر می تواند تنظیم شود:

text, ntext, image, xml, timestamp, varchar(max), nvarchar(max), varbinary(max), CLR user-defined data types

boundary_value

نقاط مرزی پارتیشن بندی را تعیین می کند.

LEFT | RIGHT

با توجه به اینکه پارتیشن بندی بر اساس نقاط مرزی (boundary_value) انجام می شود، با استفاده از Range Left یا Range right می توانید تعیین کنید که کدام سمت از boundary_value جزو پارتیشن جاری است.

مثال1: ایجاد Partition Function از نوع RANGE LEFT

در مثال زیر، یک Partition Function بنام myRangePF1 روی یک فیلد از نوع int ایجاد کرده ایم که داده های جدول یا ایندکس را به چهار Partition تقسیم می کند:

RANGE LEFT

CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES (1, 100, 1000);

در جدول زیر نحوه ی استفاده از Partition Function بالا را روی ستون col1 نشان داده ایم:

Partition

1

2

3

4

Values

col1 <= 1

col1 > 1 AND col1 <= 100

col1 > 100 AND col1 <=1000

col1 > 1000

مثال2: ایجاد Partition Function از نوع RANGE RIGHT

در مثال زیر، یک Partition Function بنام myRangePF2 روی یک فیلد از نوع int ایجاد کرده ایم که داده های جدول یا ایندکس را به چهار Partition تقسیم می کند:

RANGE RIGHT

CREATE PARTITION FUNCTION myRangePF2 (int)
AS RANGE RIGHT FOR VALUES (1, 100, 1000);

در جدول زیر نحوه ی استفاده از Partition Function بالا را روی ستون col1 نشان داده ایم:

Partition

1

2

3

4

Values

col1 < 1

col1 >= 1 AND col1 < 100

col1 >= 100 AND col1 < 1000

col1 >= 1000

مرحله 2: ایجاد Partition Scheme

با استفاده از Partition Scheme می توانید محل ذخیره سازی هر پارتیشن را مشخص نمایید.


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

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

  1. یک مثال عملی از نحوه ی ایجاد و استفاده از پارتیشن بندی در SQL Server

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

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

نقطه شروع بحث بالا (پارتیشن بندی در SQL Server) در ویدئو: 19:50


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

READ MORE