خانه > Persian Contents, SQL Server > آموزش گام به گام قسمت بندی(partitioning) در SQL Server

آموزش گام به گام قسمت بندی(partitioning) در SQL Server

در ادامه مطلب قبلی با عنوان معرفی تکنیک قسمت بندی (partitioning) در SQL Server میخواهم مثالی در این زمینه مطرح کنم که شاید به درد خیلی از افراد بخورد. در این مثال نحوه قسمت بندی یک جدول را بیان میکنم. لطفا ابتدا مطلی قبل را برای آشنایی بیشتر مطالعه بفرمایید.

مرحله اول – یک پایگاه داده تستی با دو filegroup مختلف بسازید.
این متن برای بیان مثال از درایو C کامپیوتر استفاده میکند. اگرچه باد بیان کنم که برای به دست آوردن بهترین سطح کارایی قسمت‌بندی بهتر است که filegroup ها در دیسک‌های سخت مجزا تعریف شوند. قبل از اجرای اسکریپت زیر، مطمئن شوید که درایو C کامپیوتر شما حاوی دو فولدر میباشد.فولدرهای Primary و Secondary در مثال زیر دو فولدری هستند که برای filegroup های مختلف تعریف شده‌اند. اسکرپت زیر را برای ساختن پایگاه داده تستی اجرا نمایید.

USE Master;
GO
— Step 1 : Create New Test Database with two different filegroups.
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = N’TestDB›)
DROP DATABASE TestDB;
GO
CREATE DATABASE TestDB
ON PRIMARY
(NAME=’TestDB_Part1′,
FILENAME=
‹C:\Data\Primary\TestDB_Part1.mdf›,
SIZE=2,
MAXSIZE=100,
FILEGROWTH=1 ),
FILEGROUP TestDB_Part2
(NAME = ‹TestDB_Part2›,
FILENAME =
‹C:\Data\Secondary\TestDB_Part2.ndf›,
SIZE = 2,
MAXSIZE=100,
FILEGROWTH=1 );
GO

مرحله دوم – تابع محدوده قسمت‌بندی را بسازید.
تابع قسمت‌بندی محدوده مقادیری که در قسمت متفاوت ذخیره شده است را تعریف مینماید. برای مثال اجازه دهید که تصور کنیم ۱۰ رکورد اول در یک filegroup و مابقی در filegroup دیگر ذخیره شده است. تابع زیر، تابع قسمت‌بندی را با محدوده مشخص تعریف خواهد کرد.

USE TestDB;
GO
— Step 2 : Create Partition Range Function
CREATE PARTITION FUNCTION TestDB_PartitionRange (INT)
AS RANGE LEFT FOR
VALUES (10);
GO

مرحله سوم – طرح قسمت‌بندی را به filegroup ها الحاق کنید.
تابع قسمت‌بندی باید به filegroup ها الحاق شود تا در قسمت‌بندی جدول استفاده شود. در مثال زیر قسمت‌بندی روی filegroup های primary و secondary ساخته شده است.

USE TestDB;
GO
— Step 3 : Attach Partition Scheme to FileGroups
CREATE PARTITION SCHEME TestDB_PartitionScheme
AS PARTITION TestDB_PartitionRange
TO ([PRIMARY], TestDB_Part2);
GO

مرحله چهارم – ساختن جدول با کلید و طرح قسمت‌بندی
جدولی که باید قسمت‌بندی شود باید به صورتی ساخته شود که دارای ستونی با نامی باشد که با  طرح قسمت‌بندی برای قسمت‌بندی جداول در filegroup های مختلف استفاده شود. مثال زیر ستونهای شناسه را به عنوان کلید قسمت‌بندی نشان داده است.

USE TestDB;
GO
— Step 4 : Create Table with Partition Key and Partition Scheme
CREATE TABLE TestTable
(ID INT NOT NULL,
Date DATETIME)
ON TestDB_PartitionScheme (ID);
GO

مرحله پنجم – ساخت اندیس روی جدول قسمت‌بندی شده که بحثی اختیاری و توصیه شده است.
این مرحله اختیاریست اما به شدت توصیه شده است. مثال زیر نحوه ساخت اندیسهای ردیف شده جدول را نشان میدهد. در اینجا اندیس با استفاده از طرح قسمت‌بندی و کلید قسمت‌بندی به عنوان یک جدول قسمت‌بندی شده ساخته شده است.

USE TestDB;
GO
— Step 5 : (Optional/Recommended) Create Index on Partitioned Table
CREATE UNIQUE CLUSTERED INDEX IX_TestTable
ON TestTable(ID)
ON TestDB_PartitionScheme (ID);
GO

مرحله ششم –  وارد کردن داده در جدول قسمت‌بندی شده
داده ها را در جدول قسمت‌بندی شده وارد کنید. در اینجا کل ۳ رکورد را وارد میکنیم. قبلا تصمیم گرفته بودیم که در قسمت‌بندی اول شناسه کلیدهای قسمت‌بندی یک تا ده را قرار دهیم و مابقی رکوردها را در قسمت دوم قرار دهیم. در مثال زیر رکورد با شناسه (ID) برابر ۱ وارد قسمت اول شده است و مابقی در قسمت دوم وارد خواهند شد.

USE TestDB;
GO
— Step 6 : Insert Data in Partitioned Table
INSERT INTO TestTable (ID, Date) — Inserted in Partition 1
VALUES (1,GETDATE());
INSERT INTO TestTable (ID, Date) — Inserted in Partition 2
VALUES (11,GETDATE());
INSERT INTO TestTable (ID, Date) — Inserted in Partition 2
VALUES (12,GETDATE());
GO

مرحله هفتم – داده را از جدول تستی آزمایش کنید.
روی جدول TestTable جستجو بزنید و داده های وارد شده در آن را ببینید.

USE TestDB;
GO
— Step 7 : Test Data from TestTable
SELECT *
FROM TestTable;
GO

مرحله هشتم – درستی یا نادرستی وارد شدن داده ها را بررسی نمایید.
میتوانیم روی view با نام sys.partitions کوئری بزنیم و بررسی کنیم که جدول TestTable شامل دو قسمت است و همانطور که در مرحله ۶ بیان شد، یک رکورد وارد قسمت ۱ و دو رکورد وارد قسمت ۲ شده‌اند.

USE TestDB;
GO
— Step 8 : Verify Rows Inserted in Partitions
SELECT *
FROM sys.partitions
WHERE OBJECT_NAME(OBJECT_ID)=’TestTable›;
GO

منبع مطلب

دسته‌ها:Persian Contents, SQL Server
  1. رحمان موسویان
    اکتبر 13, 2009 در 5:27 ب.ظ.

    سلام.ممنون خیلی بابت مطلبتاستفاده کردم.گفتم تشکر کنم.موفق باشی

  2. Alex
    مه 18, 2010 در 7:42 ق.ظ.

    ممنون.

  1. No trackbacks yet.

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s

%d وب‌نوشت‌نویس این را دوست دارند: