پارتیشن بندی (Partition) در Sql Server

یکی از قابلیت های بانک اطلاعاتی در 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 اضافه کنید.

پارتیشن بندی (Partition) در Sql Server
پارتیشن بندی (Partition) در Sql Server
  1. در این مرحله Filegroup های مورد نظر  (چهار Filegroup)  را ایجاد می کنیم. 
پارتیشن بندی (Partition) در Sql Server
پارتیشن بندی (Partition) در Sql Server
  •  در این مرحله بر روی جدولی که می خواهیم پارتیشن شود، کلیک راست کرده و گزینه Storage و سپس گزینه Create Partition را کلیک می کنیم.
پارتیشن بندی (Partition) در Sql Server
  • در این مرحله پنجره خوش آمد گویی نمایان می شود.
پارتیشن بندی (Partition) در Sql Server
  • در این مرحله مشخص می کنیم که بر روی کدام ستون می خواهیم عمل پارتیشن صورت پذیرد (نام ستون پارتیشن را وارد می کنیم).
پارتیشن بندی (Partition) در Sql Server
  • در این مرحله نام پارتیشن فانکشن مورد نظرمان را وارد می کنیم.
پارتیشن بندی (Partition) در Sql Server
  • در این مرحله نام Partition Scheme خود را می دهیم.
پارتیشن بندی (Partition) در Sql Server
  • حال در اینجا :
پارتیشن بندی (Partition) در Sql Server
  • در این مرحله یا می توانیم اسکریپت بگریم (Create Script) و یا اینکه بلافاصله اقدام به ایجاد پارتیشن کنیمRun Immediately  و یا اینکه به صورت یک فایل آن اسکریپ را ذخیره نماییم(Save Script) و یا اینکه در اسکریپت را در حافظه ذخیره کنیم(Script to Clipboard).
پارتیشن بندی (Partition) در Sql Server
  • خلاصه ای از تنظیماتی که انجام داده ایم در این پنجره نمایش داده می شود.
پارتیشن بندی (Partition) در Sql Server
  1. در این مرحله اسکریپ کارهایی که می خواهیم انجام دهیم را خواهیم دید. با اجرای این اسکریپت جدول شما پارتیشن خواهد شد.
    مطابق کوئری زیر از Rang Left استفاده شده است.  به کدهای زیر دقت کنید.
پارتیشن بندی (Partition) در Sql Server
پارتیشن بندی (Partition) در Sql Server