پارتیشن بندی در SQL Server
آموزش پیشرفته 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: کوچکتر از 2003
- پارتیشن 2: بین 2003 و 2004
- پارتیشن 3:بین 2004 و 2005
- پارتیشن 4: بزرگتر از 2005
سطوح مختلف پارتیشن بندی
پارتیشن بندی شامل سه سطح زیر است:
سطح 1: داده: Data یا داده هایی که عملیات پارتیشن بندی روی آنها اتفاق می افتد.
سطح 2: Partition Function: تابع پارتیشن، فیلدی که براساس آن پارتیشن بندی ایجاد می شود را مشخص می نماید.
سطح 3: Partition Scheme: محل ذخیره سازی هر کدام از پارتیشن ها را مشخص می کند.
مراحل پارتیشن بندی در SQL Server
از دو دید مختلف می توان مراحل پارتیشن بندی را بررسی نمود:
- از دید پیاده ساز (Developer)
- از دید مدیر بانک اطلاعاتی (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) انجام می شود، با استفاده از 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 از بسته آموزشی "افزایش کارایی پایگاه داده" موارد زیر را خواهید دید:
- یک مثال عملی از نحوه ی ایجاد و استفاده از پارتیشن بندی در SQL Server
دسترسی به موارد آموزشی بالا در بسته خریداری شده
- شماره جلسه: 7
- نام فایل ویدئو: 04
- فرمت فایل: mp4.
نقطه شروع بحث بالا (پارتیشن بندی در SQL Server) در ویدئو: 19:50
برای خرید و دانلود کامل آموزش پیشرفته SQL Server کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 16808