隨著業(yè)務(wù)的不斷擴(kuò)大,原始設(shè)計(jì)的單表單庫(kù)已經(jīng)不能滿足實(shí)際業(yè)務(wù)場(chǎng)景,并發(fā)量大的時(shí)候數(shù)據(jù)庫(kù)I/O已經(jīng)開始排隊(duì)了,這時(shí)需要著手于數(shù)據(jù)庫(kù)優(yōu)化。這樣的業(yè)務(wù)場(chǎng)景單純?cè)黾铀饕呀?jīng)不足夠應(yīng)付業(yè)務(wù)了,這個(gè)時(shí)候我們就要開始考慮SQL SERVER的表分區(qū)(Partition)了。
表分區(qū)是一項(xiàng)需要長(zhǎng)期維護(hù)周期變更的操作,分區(qū)的意義在于將大數(shù)據(jù)從物理上切割成幾個(gè)互相獨(dú)立的小部分,這樣我們?cè)诓樵兊臅r(shí)候只取出其中一個(gè)或者幾個(gè)分區(qū),減少查找的數(shù)據(jù)量。對(duì)于不同文件組的分區(qū),并行查詢的性能要高于對(duì)整個(gè)表的查詢性能。下面介紹詳細(xì)操作。
分區(qū)列
在管理器中,找到需要分區(qū)的表,右鍵 ——>儲(chǔ)存——>創(chuàng)建分區(qū),會(huì)彈出如下窗口:

要注意向?qū)е姓f(shuō)到的,可以創(chuàng)建用于對(duì)表進(jìn)行分區(qū)的腳本,可以立即運(yùn)行該腳本,或者為表分區(qū)安排作業(yè)。我第一次嘗試的時(shí)候把腳本保存下來(lái)就以為會(huì)自動(dòng)執(zhí)行,傻傻的不知道等了多久(:手動(dòng)狗頭
點(diǎn)擊下一步后如下圖所示,需要選擇一項(xiàng)分區(qū)列,這里會(huì)列出包括列名、數(shù)據(jù)類型、長(zhǎng)度、精度、刻度的信息,我們可以根據(jù)業(yè)務(wù)去選擇合適的列區(qū)作為分區(qū)列。而以下類型的列不可用于分區(qū):text、ntext、image、xml、timestamp、varchar(max)、nvarchar(max)、varbinary(max)、別名、hierarchyid、空間索引或 CLR 用戶定義的數(shù)據(jù)類型。此外,如果使用計(jì)算列作為分區(qū)列,則必須將該列設(shè)為持久化列(Persisit)。如圖測(cè)試表我們選擇時(shí)間為分區(qū)列。下邊有兩個(gè)選項(xiàng):
- 將此表與選定的分區(qū)表并置
此處是要求在同一數(shù)據(jù)庫(kù)下有另一張已經(jīng)分好區(qū)的表,同時(shí)這張表的分區(qū)列和當(dāng)前選中的列的類型完全一致。 -
將存儲(chǔ)區(qū)中的所有非唯一和唯一索引與索引分區(qū)列對(duì)齊
這樣會(huì)將表中的所有索引也一同分區(qū),實(shí)現(xiàn)“對(duì)齊”。
選擇分區(qū)列.png
分區(qū)函數(shù)與分區(qū)方案
在之前的一步選好分區(qū)列之后,如果沒有選擇“將此表與選定的分區(qū)表并置”選項(xiàng),接下來(lái)就會(huì)進(jìn)入選擇創(chuàng)建分區(qū)函數(shù)以及分區(qū)方案的界面,分區(qū)函數(shù)需要指定分區(qū)邊界,分區(qū)方案是規(guī)劃了文件組。

左邊界是指每個(gè)分區(qū)的邊界值被包含在邊界值左側(cè)的分區(qū),也就是每個(gè)分區(qū)內(nèi)的數(shù)據(jù)約束是<=指定的邊界值,所以,右邊界指的就是每個(gè)分區(qū)的邊界值被包含在邊界值右側(cè)的分區(qū)中,每個(gè)分區(qū)內(nèi)的數(shù)據(jù)約束是<指定的邊界值。
有一個(gè)需要注意的地方是,在最后一個(gè)分區(qū)是沒有制定邊界的,用于保存所有>左邊界或<=右邊界最后一個(gè)分區(qū)邊界的數(shù)據(jù),截圖還沒給設(shè)置文件組,這個(gè)是一定需要設(shè)置的。之后點(diǎn)擊下一步如下圖所示,

這個(gè)可以自己選擇。
接下來(lái)更詳細(xì)的有時(shí)間再更新吧~~~
想寫一些東西分享,歡迎轉(zhuǎn)載,請(qǐng)注明出處。
簡(jiǎn)書-板凳兒兒
http://www.itdecent.cn/p/eaa44dea7bfb
