使用分區表的主要目的,是為了改善大型表以及具有各種訪問模式的表的延展性和可管理性。大型表就是資料量巨大的表。訪問模式則是因目的不同,需訪問的不同的資料行集,每種目的的訪問可以稱之為一種訪問模式。分區一方面可以將資料分為更小、更易管理的部分,為提高效能起到一定的作用;另一方面,對於如果具有多個CPU的系統,分區可以是對錶的操作通過並行的方式進行,這對於提升效能是非常有協助的。
咱們這次就從後往前說SQL資料庫分區的步驟:
1. 查詢
--最後,我們可以查詢下,插入的這些資料,是否真的被劃分到四個不同的檔案組裡的表分區了,可以這樣看
SELECT *, $PARTITION.[Data Partition Range](ID) FROM MyTable
MyTable表示我建立的一個有分區的表,$PARTITION.[Data Partition Range](ID)是所在的分區
2. 添加資料
USE [Data Partition DB2]godeclare @count intset @count =-25while @count <=100begininsert into MyTable select @count,getdate(),100.00set @count=@count+1endset @count =101while @count <=200begininsert into MyTable select @count,getdate(),200.00set @count=@count+1endset @count =201while @count <=300begininsert into MyTable select @count,getdate(),300.00set @count=@count+1endset @count =301while @count <=400begininsert into MyTable select @count,getdate(),400.00set @count=@count+1endset @count =401while @count <=800begininsert into MyTable select @count,getdate(),500.00set @count=@count+1end
這一步和普通的沒有區別,就是想表中添加資料
3. 建立表的欄位和它增長依賴的分區架構
--再建立表的結構
USE [Data Partition DB2]goCREATE TABLE MyTable(ID INT NOTNULL, Date DATETIME, Cost money) ON [Data Partition Scheme] (ID);
--這裡注意,ON[Data Partition Scheme] (ID);表明,劃分時以ID的大小作為劃分的根據,ON後要跟分區架購的名稱
--最後,我們可以填充資料了
4. 建立資料庫分區架構
接下來,我們要建立分區架構,即將分區函數應用到我們分好的四個檔案組裡面去
USE [Data Partition DB2]goCREATE PARTITION SCHEME [Data Partition Scheme]AS PARTITION [Data Partition Range]TO ([Data Partition DB FG1], [Data Partition DB FG2],[Data Partition DB FG3],[Data Partition DB FG4]);
5. 建立分區表函數,這其實可以理解為一個規則,後面的類型(int)表明接下來用來分區的那個欄位的類型是INT類型
use [Data Partition DB2]GOCREATE PARTITION FUNCTION [Data PartitionRange](int)AS RANGE LEFT FOR VALUES (100,200,300)
6. 建立主要資料庫檔案primary和4個單獨的檔案組FG1-FG4
USE [master]GO/******Object: Database [Data PartitionDB] Script Date: 10/08/2006 23:09:53******/IF EXISTS (SELECT name FROM sys.databases WHERE name = N'Data Partition DB2')DROP DATABASE [Data Partition DB2]GOCREATE DATABASE [Data Partition DB2]ON PRIMARY(NAME='DataPartition DB Primary FG',FILENAME='F:\Data2\Primary\DataPartition DB Primary FG.mdf',SIZE=5,MAXSIZE=500,FILEGROWTH=1 ),FILEGROUP [Data Partition DB FG1](NAME = 'DataPartition DB FG1',FILENAME ='F:\Data2\FG1\DataPartition DB FG1.ndf',SIZE = 5MB,MAXSIZE=500,FILEGROWTH=1 ),FILEGROUP [Data Partition DB FG2](NAME = 'DataPartition DB FG2',FILENAME ='F:\Data2\FG2\DataPartition DB FG2.ndf',SIZE = 5MB,MAXSIZE=500,FILEGROWTH=1 ),FILEGROUP [Data Partition DB FG3](NAME = 'DataPartition DB FG3',FILENAME ='F:\Data2\FG3\DataPartition DB FG3.ndf',SIZE = 5MB,MAXSIZE=500,FILEGROWTH=1 ),FILEGROUP [Data Partition DB FG4](NAME = 'DataPartition DB FG4',FILENAME ='F:\Data2\FG4\DataPartition DB FG4.ndf',SIZE = 5MB,MAXSIZE=500,FILEGROWTH=1 )