一步步教你建立SQL數(shù)據(jù)庫的表分區(qū)
直接上步驟:
1)新建一個(gè)數(shù)據(jù)庫


2)添加幾個(gè)文件組

3)回到“常規(guī)”選項(xiàng)卡,添加數(shù)據(jù)庫文件

看到用紅色框框起來的地方?jīng)]?上一步中建立的文件組在這里就用上了。再看后面的路徑,我把每一個(gè)文件都單獨(dú)放在不同的磁盤上,而且最好都是單獨(dú)的放在不同的物理盤上,這樣會大大提高數(shù)據(jù)的性能。 點(diǎn)擊“確定”數(shù)據(jù)庫就算創(chuàng)建完成了。
4)接下來要做的是建立一個(gè)分區(qū)行數(shù),SQL語句如下:大家學(xué)習(xí)的時(shí)候最好不要直接COPY,動(dòng)手把它抄一遍也好。
create partition function PartFuncForExample(Datetime)
as Range Right for Value('20000101','20010101','20020101','20030101')
這里我準(zhǔn)備用表中的某個(gè)時(shí)間字段作為分區(qū)的條件,當(dāng)然你也可以用其他的,比如INT之類,只要好分段的都可以。
這里注意 Right 關(guān)鍵字,意思就是當(dāng)記錄的時(shí)間(在下面會被指到表的某個(gè)字段)大于等于20000101的時(shí)候,數(shù)據(jù)會被分到下一個(gè)區(qū)間,比如2000年1月1號之前的數(shù)據(jù)會被分到一區(qū),包含2000年1月1號和之后的數(shù)據(jù)會被分到二區(qū),以此類推。Right 也可以使用Left替代,意思同上類似。另外,上面我定義了四個(gè)分割點(diǎn),這四個(gè)分割點(diǎn)是根據(jù)我們剛剛創(chuàng)建的文件組來決定的。四個(gè)分割點(diǎn)就能產(chǎn)生5個(gè)區(qū)間段,我們把每個(gè)區(qū)間段的數(shù)據(jù)存入一個(gè)文件組。
正確執(zhí)行上述語句后你可以在數(shù)據(jù)里找到以“PartFuncForExample”命名的分區(qū)函數(shù),如下圖

5)把分區(qū)函數(shù)建立好以后,我們再來建立分區(qū)方案。目的是為了把分區(qū)函數(shù)產(chǎn)生的分區(qū)映射到文件數(shù)據(jù)組里。分區(qū)函數(shù)是告訴數(shù)據(jù)庫如何分區(qū)數(shù)據(jù),而分區(qū)方案是告訴數(shù)據(jù)庫如何把已分區(qū)的數(shù)據(jù)存到哪個(gè)文件組里。
下面我來創(chuàng)建分區(qū)方案。
Create Partition Scheme PartSchForExample //創(chuàng)建一個(gè)分區(qū)方案+分區(qū)方案名稱 As Partition PartFuncForExample//目的為了 分區(qū)函數(shù)PartFuncForExample To ( PRIMARY, //文件組名 Partition1, //文件組名 Partition2, //文件組名 Partition3, //文件組名 Partition4 //文件組名 )
正確執(zhí)行后能在分區(qū)方案中看到,如下圖

6)馬上就快要大公告成了,下面我們來建立要分區(qū)存儲的表,該表的數(shù)據(jù)理論上應(yīng)該是非常非常多的,百萬級別的記錄以上而且基本上是不更新的。要不然建立分區(qū)存儲就沒多大意義了。
Create Table PartitionTable( [ID] [int] Identity(1,1) not null, [Name] [nvarchar](50) not null, [LoginDate] [DateTime] not null //用來進(jìn)行分區(qū) ) On PartSchForExample([LoginDate]) //上面提到的指定分區(qū)字段就是這里指定的了。
執(zhí)行這段SQL,沒報(bào)錯(cuò)的話就大功告成了,呵呵.
總結(jié):
分區(qū)存儲提高了數(shù)據(jù)庫的性能,被分區(qū)存儲的數(shù)據(jù)物理上是多個(gè)文件,但邏輯上任然是一個(gè)表,對表的任何操作都跟沒分區(qū)之前一樣。插入、刪除、查詢、更新等操作的時(shí)候,數(shù)據(jù)庫會自動(dòng)為你找到對應(yīng)的分區(qū),然后執(zhí)行操作。另外的話 把多個(gè)數(shù)據(jù)文件、日志文件都分別部署在不同的高性能物理盤上,也能大大提高性能.
當(dāng)然,分區(qū)存儲的好處還有很多我不知道的,歡迎大家一起探討!
相關(guān)文章
SQL Server 2008 R2數(shù)據(jù)庫遷移的實(shí)現(xiàn)方法
這篇文章給大家介紹了SQL Server 2008 R2數(shù)據(jù)庫遷移的兩種方案簡要指南,文章通過圖文結(jié)合介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的小伙伴跟著小編一起來看看吧2024-01-01
SQL Server利用bcp命令把SQL語句結(jié)果生成文本文件
在SQL Server里可以調(diào)用DOS下的命令行工具bcp來實(shí)現(xiàn)把表里的數(shù)據(jù)或者SQL語句結(jié)果生成文本文件,詳細(xì)看下操作方法,感興趣的你可不要錯(cuò)過了哈2013-02-02
sqlserver 不能將值NULL插入列id(列不允許有空值解決)
Microsoft OLE DB Provider for SQL Server 錯(cuò)誤 '80040e2f' 不能將值 NULL 插入列 'id',表 'web.dbo.dingdan';列不允許有空值。INSERT 失敗2013-06-06
SQL?Server基礎(chǔ)教程之游標(biāo)(Cursor)
這篇文章主要給大家介紹了關(guān)于SQL?Server基礎(chǔ)教程之游標(biāo)(Cursor)的相關(guān)資料,游標(biāo)是SQL Server的一種數(shù)據(jù)訪問機(jī)制,它允許用戶訪問單獨(dú)的數(shù)據(jù)行,需要的朋友可以參考下2023-11-11
sqlserver isnull在數(shù)據(jù)庫查詢中的應(yīng)用
isnull在數(shù)據(jù)庫查詢中的應(yīng)用,特別是再語句連接的時(shí)候需要用到2011-11-11
SQL語句練習(xí)實(shí)例之四 找出促銷活動(dòng)中銷售額最高的職員
你剛在一家服裝銷售公司中找到了一份工作,此時(shí)經(jīng)理要求你根據(jù)數(shù)據(jù)庫中的兩張表得到促銷活動(dòng)銷售額最高的銷售員2011-10-10
SQL Server代理服務(wù)無法啟動(dòng)的解決方法
錯(cuò)誤MSSQLSERVERSQLServerAgent could not be started (reason: SQLServerAgent 必須能夠以 SysAdmin 身份連接到 SQLServer,但“(未知)”不是 SysAdmin 角色的成員)2013-02-02

