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

پارتیشن بندی در SQL
آکادمی آی تی
آکادمی آی تی
dots

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

زمان مورد نیاز برای مطالعه 5 دقیقه

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

دپارتمان ‌ها: آموزش برنامه نویسی
1400/04/08
7,928 بازدید

پارتیشن بندی چیست

 

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

با استفاده از این قابلیت این امکان وجود دارد که جداولی که حجم داده هایش بسیار زیاد است به ساختارهای جداگانه تقسیم شود. به کد نویسی سمت Application به هیچ عنوان برای برای استفاده از قابلیت پارتیشن بندی SQL نیازی وجود ندارد.

ما در این مقاله پارتیشن بندی در SQL سرور را معرفی خواهیم کرد. شما در پایان این مقاله خواهید فهمید که چرا باید پارتیشن بندی را انجام دهیم و مراحل پارتیشن بندی در SQL سرور چگونه است.


پارتیشن بندی چیست ؟

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

هدف اصلی از پارتیشن بندی کمک به حفظ جداول بزرگ و کاهش زمان پاسخ کلی برای خواندن و بارگذاری داده ها برای عملکردهای خاص SQL است.


چرا باید پایگاه داده را پارتیشن بندی کنیم ؟

با تقسیم بندی داده ها، می توان انبوهی از داده ها را به پارتیشن های كوچكتر و در نتیجه با مدیریت بهتر، می توان به مسائل مربوط به پشتیبانی از جداول بزرگ بهتر پاسخ داد. پارتیشن بندی داده ها همچنین منجر به بارگذاری سریعتر داده ها، نظارت آسان بر داده های قدیمی و بازیابی اطلاعات می شود.


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

SQL Server از پارتیشن بندی جدول و فهرست پشتیبانی می کند. داده های جداول و نمایه های تقسیم شده به واحدهایی تقسیم می شوند که به صورت اختیاری ممکن است در بیش از یک گروه در پایگاه داده پخش شوند. داده ها به صورت افقی تقسیم می شوند ، بنابراین گروه های ردیف به صورت جداگانه تقسیم می شوند


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

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

•    سطح 1: داده؛ در سطح اول داده هایی که عمل پارتیشن بندی بر روی آنها رخ می دهد.

•    سطح 2: Partition Function؛ در سطح دوم قسمتی است که پارتیشن بندی را مشخص می نماید و تابع پارتیشن، نام دارد..

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


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

مراحل پارتیشن بندی در SQL را می توان از دو دید مختلف مورد بررسی قرار داد. ما می توانیم مراحل پارتیشن بندی را از دید Developer و مدیر بانک اطلاعاتی مورد بررسی قرار دهیم. ما در ادامه به تفصیل به بررسی هر کدام از مراحل پارتیشن بندی از نگاه پیاده ساز و Database Admin خواهیم پرداخت.


دیدگاه های مختلف پارتیشن بندی :

•    از دید پیاده ساز

•    از دید مدیر بانک اطلاعاتی


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

مراحل پارتیشن بندی از دیدگاه توسعه دهند دو مرحله را دارد. در مرحله اول باید شما کلید پارتیشن را مشخص کنیم. و در مرحله بعدی باید تعداد پارتیشن ها را تعیین کنید.


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

یکی از مهمترین بخش های پارتیشن بندی مشخص کردن Partition Key می باشد. در اینجا باید به عنوان کلید پارتیشن بندی شما فیلدی را انتخاب کنید. انتخاب شما باید بر اساس جستجوی بیشتر باشد. 

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

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


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

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

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

 


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

حالا که به خوبی کلید و تعداد پارتیشن ها را مشخص کردید نوبت به بررسی توسط مدیر بانک اطلاعاتی رسیده است. مراحل پارتیشن بندی در SQL از دید مدیر بانک اطلاعاتی شامل دو مرحله ایجاد Filegroup و Partition Function می باشد.


مرحله 1: ایجاد Filegroup

یک Filegroup را می توان به ازای هر پارتیشن ایجاد کرد. این امکان وجود دارد که چند پارتیشن و یا حتی تمام پارتیشن ها را در یک Filegroup قرار دهیم.


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

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

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

 

1- ایجاد پارتیشن به صورت ویزاردی زمانی که پارتیش را بخواهیم روی کلید اصلی جدول ایجاد کنیم

در این قسمت می خواهیم عملیات پارتیشن بندی را به صورت ویزادی بر روی فیلد کلاستر جدول tblNew انجام دهیم.

لازم به ذکر است که چهار فایل گروپ به این دیتابیس به نام های Fg1,Fg2,FG3,FG4 اضافه کنید.

تذکر : فیلدهای جدول مورد نظر :

 

ایجاد پارتیشن به صورت ویزاردی

 

تذکر : رکورد های جدول مورد نظر :

 

ایجاد پارتیشن به صورت ویزاردی
 

1 – قدم اول : در این مرحله Filegroup های مورد نظر (چهار Filegroup) را ایجاد می کنیم. 

ایجاد پارتیشن به صورت ویزاردی

 

2- قدم بعدی : در این مرحله بر روی جدولی که می خواهیم پارتیشن شود، کلیک راست کرده و گزینه Storage و سپس گزینه Create Partition را کلیک می کنیم.

ایجاد پارتیشن به صورت ویزاردی

 

3 – قدم بعدی : در این مرحله پنجره خوش آمد گویی نمایان می شود.

ایجاد پارتیشن به صورت ویزاردی

 

4 – قدم بعدی : در این مرحله مشخص می کنیم که بر روی کدام ستون می خواهیم عمل پارتیشن صورت پذیرد (نام ستون پارتیشن را وارد می کنیم).

ایجاد پارتیشن به صورت ویزاردی

 

5 – قدم بعدی :
در این مرحله نام پارتیشن فانکشن مورد نظرمان را وارد می کنیم.

ایجاد پارتیشن به صورت ویزاردی
 

6 – قدم بعد ی :
در این مرحله نام Partition Scheme خود را می دهیم.

ایجاد پارتیشن به صورت ویزاردی
 

7 – قدم بعدی 

ایجاد پارتیشن به صورت ویزاردی

 

8 – قدم بعدی : 

در این مرحله یا می توانیم اسکریپت بگریم (Create Script) و یا اینکه بلافاصله اقدام به ایجاد پارتیشن کنیم(Run Immediately) و یا اینکه به صورت یک فایل آن اسکریپ را ذخیره نماییم(Save Script) و یا اینکه در اسکریپت را در حافظه ذخیره کنیم(Script to Clipboard).

ایجاد پارتیشن به صورت ویزاردی

 

9 – قدم بعدی :  
خلاصه ای از تنظیماتی که انجام داده ایم در این پنجره نمایش داده می شود.

ایجاد پارتیشن به صورت ویزاردی

 

10 – قدم بعدی : در این مرحله اسکریپ کارهایی که می خواهیم انجام دهیم را خواهیم دید. با اجرای این اسکریپت جدول شما پارتیشن خواهد شد.
مطابق کوئری زیر از Rang Left استفاده شده است. (به کدهای زیر دقت کنید)

ایجاد پارتیشن به صورت ویزاردی

 

2- پارتیشن بندی جدولی که کلید پارتیشن ، فیلدی غیر از ستون کلید اصلی می باشد

 

1 – قدم اول : جهت ایجاد پارتیشن به صورت ویزاردی کافیست روی نام جدول مورد نظرمان کلیک راست نموده و گزینه Storage و سپس گزینه Create Partition را کلیک می نماییم.

پارتیشن بندی جدولی

 

2 – قدم دوم : در این صورت پنجره خوش امد گویی مطابق شکل زیر نمایان می گردد.

پارتیشن بندی جدولی

 

3 – قدم سوم : فیلد Ordercount را جهت کلید پارتیشن انتخاب می نماییم.

پارتیشن بندی جدولی

 

4 – قدم چهارم : نام Partition Function خود را مطابق شکل زیر وارد می نماییم.

پارتیشن بندی جدولی

 

5 – قدم پنجم : نام Partition Scheme خود را مطابق شکل زیر وارد می نماییم.

پارتیشن بندی جدولی

 

6 – قدم ششم : مطابق شکل زیر Rang Left را انتخاب نموده و در قست Filegroup نام فایل گروپ های خود را وارد و در ستون Boundry مقدار رنج های خود (مرز های پارتیشن بندی) را وارد می نماییم.

پارتیشن بندی جدولی

 

لازم به ذکر است که محدوده پارتیشن ها به صورت زیر می باشد :

پارتیشن بندی جدولی

 

7 – قدم هفتم : در  مرحله هفتم می توانیم ابتدا اسکریپت کارهایی که باید انجام دهیم را ایجاد نماییم :

پارتیشن بندی جدولی

 

8 – قدم هشتم : خلاصه ای از تنظیماتی که انجام داده ایم را در این مرحله می بینید.

پارتیشن بندی جدولی

 

9 – قدم نهم : در این مرحله ایجاد اسکریپت مربوط به پارتیشن بندی با موفقیت ایجاد گردید.

پارتیشن بندی جدولی

 

10 – قدم دهم : اجرا اسکریپت جهت پیاده سازی پارتیشن روی فیلدی غیر از Primary Key (لطفا به اسکریپت ها دقت فرمایید):

پارتیشن بندی

 

نتیجه گیری
پارتیشن بندی یک از اصول بسیار مهم در بالابردن بهره وری و سرعت ذخیره و بازیابی داده ها در نرم افزار SQL سرور می‌باشد، شما با کمک از این جداول می توانید یک فایل بزرگ و البته کند را به چندین فایل با سایز های بسیار کوچک تر تقسیم کنید.
برای کسب اطلاعات بیشتر در مورد SQL سرور و پارتیشن بندی می توانید با کارشناسان ما در آکادمی آی تی با شماره 02191035287 در تماس باشید.