SQL Server表分區(qū)操作詳解
【IT專家網(wǎng)獨(dú)家】你是否在千方百計(jì)優(yōu)化SQL Server 數(shù)據(jù)庫的性能?如果你的數(shù)據(jù)庫中含有大量的表格,把這些表格分區(qū)放入獨(dú)立的文件組可能會(huì)讓你受益匪淺。SQL Server 2005引入的表分區(qū)技術(shù),讓用戶能夠把數(shù)據(jù)分散存放到不同的物理磁盤中,提高這些磁盤的并行處理性能以優(yōu)化查詢性能。
SQL Server數(shù)據(jù)庫表分區(qū)操作過程由三個(gè)步驟組成:
1. 創(chuàng)建分區(qū)函數(shù)
2. 創(chuàng)建分區(qū)架構(gòu)
3. 對(duì)表進(jìn)行分區(qū)
下面將對(duì)每個(gè)步驟進(jìn)行詳細(xì)介紹。
步驟一:創(chuàng)建一個(gè)分區(qū)函數(shù)
此分區(qū)函數(shù)用于定義你希望SQL Server如何對(duì)數(shù)據(jù)進(jìn)行分區(qū)的參數(shù)值([u]how[/u])。這個(gè)操作并不涉及任何表格,只是單純的定義了一項(xiàng)技術(shù)來分割數(shù)據(jù)。
我們可以通過指定每個(gè)分區(qū)的邊界條件來定義分區(qū)。例如,假定我們有一份Customers表,其中包含了關(guān)于所有客戶的信息,以一一對(duì)應(yīng)的客戶編號(hào)(從1到1,000,000)來區(qū)分。我們將通過以下的分區(qū)函數(shù)把這個(gè)表分為四個(gè)大小相同的分區(qū):
CREATE PARTITION FUNCTION customer_partfunc (int) AS RANGE RIGHT FOR VALUES (250000, 500000, 750000) |
這些邊界值定義了四個(gè)分區(qū)。第一個(gè)分區(qū)包括所有值小于250,000的數(shù)據(jù),第二個(gè)分區(qū)包括值在250,000到49,999之間的數(shù)據(jù)。第三個(gè)分區(qū)包括值在500,000到7499,999之間的數(shù)據(jù)。所有值大于或等于750,000的數(shù)據(jù)被歸入第四個(gè)分區(qū)。
請(qǐng)注意,這里調(diào)用的"RANGE RIGHT"語句表明每個(gè)分區(qū)邊界值是右界。類似的,如果使用"RANGE LEFT"語句,則上述第一個(gè)分區(qū)應(yīng)該包括所有值小于或等于250,000的數(shù)據(jù),第二個(gè)分區(qū)的數(shù)據(jù)值在250,001到500,000之間,以此類推。
步驟二:創(chuàng)建一個(gè)分區(qū)架構(gòu)
一旦給出描述如何分割數(shù)據(jù)的分區(qū)函數(shù),接著就要?jiǎng)?chuàng)建一個(gè)分區(qū)架構(gòu),用來定義分區(qū)位置([u]where[/u])。創(chuàng)建過程非常直截了當(dāng),只要將分區(qū)連接到指定的文件組就行了。例如,如果有四個(gè)文件組,組名從"fg1"到"fg4",那么以下的分區(qū)架構(gòu)就能達(dá)到想要的效果:
CREATE PARTITION SCHEME customer_partscheme AS PARTITION customer_partfunc TO (fg1, fg2, fg3, fg4) |
注意,這里將一個(gè)分區(qū)函數(shù)連接到了該分區(qū)架構(gòu),但并沒有將分區(qū)架構(gòu)連接到任何數(shù)據(jù)表。這就是可復(fù)用性起作用的地方了。無論有多少數(shù)據(jù)庫表,我們都可以使用該分區(qū)架構(gòu)(或僅僅是分區(qū)函數(shù))。
步驟三:對(duì)一個(gè)表進(jìn)行分區(qū)
定義好一個(gè)分區(qū)架構(gòu)后,就可以著手創(chuàng)建一個(gè)分區(qū)表了。這是整個(gè)分區(qū)操作過程中最簡單的一個(gè)步驟。只需要在表創(chuàng)建指令中添加一個(gè)"ON"語句,用來指定分區(qū)架構(gòu)以及應(yīng)用該架構(gòu)的表列。因?yàn)榉謪^(qū)架構(gòu)已經(jīng)識(shí)別了分區(qū)函數(shù),所以不需要再指定分區(qū)函數(shù)了。
例如,使用以上的分區(qū)架構(gòu)創(chuàng)建一個(gè)客戶表,可以調(diào)用以下的Transact-SQL指令:
CREATE TABLE customers (FirstName nvarchar(40), LastName nvarchar(40), CustomerNumber int) ON customer_partscheme (CustomerNumber) |
關(guān)于SQL Server的表分區(qū)功能,你知道上述的相關(guān)知識(shí)就足夠了。記住!編寫能夠用于多個(gè)表的一般的分區(qū)函數(shù)和分區(qū)架構(gòu)就能夠大大提高可復(fù)用性。