1. 程式人生 > >sql server 分區

sql server 分區

邊界值 以及 HERE alter lse BE 追溯 creat function

一.分區發展歷程

基於表的分區功能為簡化分區表的創建和維護過程提供了靈活性和更好的性能。追溯到邏輯分區表和手動分區表的功能.

二.為什麽要進行分區

為了改善大型表以及具有各種訪問模式的表的可伸縮性和可管理性。

大型表除了大小以數百 GB 計算,甚至以 TB 計算的指標外,還可以是無法按照預期方式運行的數據表,運行成本或維護成本超出預定要求。例如發生性能問題、阻塞問題、備份。

三.創建分區實現

在test庫 添加四個文件組

1 --第一步:創建四個文件組 
2 alter database test add filegroup ByIdGroup1
3 alter database
test add filegroup ByIdGroup2 4 alter database test add filegroup ByIdGroup3 5 alter database test add filegroup ByIdGroup4
--第二步: 創建四個ndf文件,對應到各文件組中,FILENAME文件存儲路徑
ALTER DATABASE test ADD FILE(
NAME=File1,
FILENAME=C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\testFile1.ndf
, SIZE=5MB, FILEGROWTH=5MB) TO FILEGROUP ByIdGroup1 ALTER DATABASE test ADD FILE( NAME=File2, FILENAME=E:\testFile2.ndf, SIZE=5MB, FILEGROWTH=5MB) TO FILEGROUP ByIdGroup2 ALTER DATABASE test ADD FILE( NAME=File3, FILENAME=E:\testFile3.ndf, SIZE=5MB, FILEGROWTH=5MB) TO FILEGROUP ByIdGroup3
ALTER DATABASE test ADD FILE( NAME=File4, FILENAME=E:\testFile4.ndf, SIZE=5MB, FILEGROWTH=5MB) TO FILEGROUP ByIdGroup4

執行完成後,查看如下圖所示:

技術分享圖片

--第三步:創建分區函數(每個分區的邊界值)
CREATE PARTITION FUNCTION pf_UpByMemberID(int) 
AS RANGE LEFT FOR VALUES (N9707,N9708,N9709,N10600)

執行完後如下圖所示:

技術分享圖片

--第四步:創建分區方案
CREATE PARTITION SCHEME ps_UpByMemberID
AS PARTITION pf_UpByMemberID TO ([PRIMARY], [ByIdGroup1],[ByIdGroup2],[ByIdGroup3],[ByIdGroup4])

  執行完後如下圖所示:

技術分享圖片

--第五步:創建分區表

右擊要分區的表-->存儲-->創建分區-->選擇分區列(這裏UpByMemberID)-->選擇分區函數-->分區方案

技術分享圖片

技術分享圖片

--第六步創建分區索引
/*
create <索引分類> index <索引名稱> 
on <表名>(列名)
on <分區方案名>(分區依據列名)
*/
CREATE NONCLUSTERED INDEX ixUpByMemberID ON [dbo].PUB_StockTestbak 
(
    [UpByMemberID]
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF)
 ON [ps_UpByMemberID]([UpByMemberID])

  

sql server 分區的優勢:

  1. 當表和索引變得非常大時,分區可以將數據分為更小、更容易管理的部分。
  2. 減少索引維護時間。
  3. 常用的where條件字段做分區依據是較佳的。
  4. 並行操作獲得更好的性能, 可以改善在極大型數據集(例如數百萬行)中執行大規模操作的性能。
  5. 一般情況下,文件組數最好與分區數相同。文件組允許您將各個表放置到不同的物理磁盤上

sql server 分區