日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MSSQL表分区的创建

發布時間:2025/3/20 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MSSQL表分区的创建 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做項目數據庫優化過程中,考慮了數據庫表分區的方案,MSSQL2005新增了表分區的概念,現在我用測試表來做一次表分區。表分區可以把不同數據放到不同數據庫文件,按物理地址來隔開數據,理論情況下如果服務器是多磁盤,多CPU,還做了磁盤陣列后,查詢操作效率會更明顯。

現在基本所有數據庫都存在表分區的概念,但MSSQL表分區一些細節又不一樣,我現在也是有一定的了解,因此本篇文章不做很細的原理性質的講解,主要講一下MSSQL表分區的創建過程。

首先創建新的數據庫文件,分別放到我本機的D:\SPPartition文件夾下的FirstPartSecondPartThirdPart文件夾,新建3個文件文件分別對應3個文件組,以我本機中存在的數據庫CenterMy為例子,它現在有個表TestSP,這是一個用戶表,現在測試數據只有1000多條數據,創建代碼如下:

ALTER DATABASE CenterMy

ADD FILEGROUP FGSP1

GO

ALTER DATABASE CenterMy

??? ADD FILE

??? (

??? NAME = 'SPTestLevel1',

??? FILENAME = 'D:\SPPartition\FirstPart\SPTestLevel1.ndf',

??????? SIZE = 5120 KB,

??????? MAXSIZE = UNLIMITED,

??????? FILEGROWTH = 5120 KB

??? ) TO FILEGROUP FGSP1

GO

創建文件組FSSP1,默認起始大小5M,最大文件數據不限制,根據實際數量大小文件以5M遞增,下面創建的文件一樣以這樣的配置創建,文件組添加對應一個數據庫文件SPTestLevel1.ndf

ALTER DATABASE CenterMy

ADD FILEGROUP FGSP2

GO

ALTER DATABASE CenterMy

??? ADD FILE

??? (

??? NAME = 'SPTestLevel2',

??? FILENAME = 'D:\SPPartition\SecondPart\SPTestLevel2.ndf',

??????? SIZE = 5120 KB,

??????? MAXSIZE = UNLIMITED,

??????? FILEGROWTH = 5120 KB

??? ) TO FILEGROUP FGSP2

GO

創建文件組FSSP2,添加對應一個數據庫文件SPTestLevel2.ndf

?

ALTER DATABASE CenterMy

ADD FILEGROUP FGSP3

GO

ALTER DATABASE CenterMy

??? ADD FILE

??? (

??? NAME = 'SPTestLevel3',

??? FILENAME = 'D:\SPPartition\ThirdPart\SPTestLevel3.ndf',

??????? SIZE = 5120 KB,

??????? MAXSIZE = UNLIMITED,

??????? FILEGROWTH = 5120 KB

??? ) TO FILEGROUP FGSP3

GO

創建文件組FSSP3,添加對應一個數據庫文件SPTestLevel3.ndf

?

查詢當前數據庫CenterMy的分組:

SELECT *

FROM sys.filegroups

可以看到已經有4個分組了,因為默認有PRIMARY主文件組。

查看當前數據文件:

SELECT *

FROM sys.database_files

可以分別看到數據文件所在目錄。

?

下面創建分區函數,它將為分區中數據分布制定標準。

CREATE PARTITION FUNCTION TestSPFunction (INT)

AS RANGE RIGHT FOR VALUES ( 500, 1000,1300)

GO

這里Range定義的范圍可以是RIGHTLEFT,我們這里使用的范圍是RIGHTRIGHT表明是<>=LEFT表明是<=>。即<500是一個區,>=500并且<1000是一個區,>=1000并且<1300是一個取,>=1300是一個分區,這里相當于分了4個段的分區。


然后創建分區方案,它將創建的分區函數映射到文件組,文件組對應磁盤上的物理數據庫文件。

CREATE PARTITION SCHEME TestSPScheme

AS PARTITION TestSPFunction

TO ([PRIMARY], FGSP1, FGSP2,FGSP3 )

GO

這里把分區函數的4個段對應到4個文件組上。
然后把表鏈接到分區方案,這里使用SPNO主鍵作為分區列。

?ALTER TABLE TestSP add CONSTRAINT [PK_SPNO] PRIMARY KEY CLUSTERED (SPNo)??

?ON TestSPScheme(SPNo)??

?

通過上面的操作,表分區就創建好了,并且數據自動放到相應的分區中了,下面我們查詢下各個分區對應的數據量。

select *

FROM sys.partitions

WHERE OBJECT_NAME(OBJECT_ID)='TestSP'

可以看到主分區有467條記錄,partion_number1234分別對應不同文件組對應的row數據條數。

最后查詢表的時候,可以在完全不知道表分區的情況下查詢,我們查看下數據對應的所在分區:

SELECT *, $PARTITION.TestSPFunction(SPNo)

?FROM TestSP

發現SPNO500的正好在第二個分區了,證明我們創建表分區成功了!

上面只是簡單描述了下表分區的過程,MSSQL2008還新增了可視化界面來添加表分區,如圖:

?

本文主要是展現了分區的過程,對于實際項目中,是否需要分區,怎么分區,分區部署到什么磁盤上,分區后索引創建以及是否能達到優化的效果,還需要再根據實際情況更多的考慮,

?

轉載于:https://www.cnblogs.com/Lawson/archive/2011/09/28/2194824.html

總結

以上是生活随笔為你收集整理的MSSQL表分区的创建的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。