SQL Server表分區(qū)操作詳解

            SQL Server 2005引入的表分區(qū)技術(shù),讓用戶能夠把數(shù)據(jù)分散存放到不同的物理磁盤中,提高這些磁盤的并行處理性能以優(yōu)化查詢性能……

            【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ù)用性。

          posted on 2009-01-12 21:46 sanmao 閱讀(285) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 石棉县| 周至县| 乐东| 井陉县| 沙雅县| 介休市| 含山县| 景宁| 武汉市| 阿合奇县| 定结县| 建始县| 榕江县| 肃南| 富锦市| 津南区| 海阳市| 三穗县| 文山县| 保定市| 项城市| 漳平市| 米易县| 定边县| 铁力市| 新竹县| 镇巴县| 红原县| 宜丰县| 金华市| 农安县| 山阴县| 达州市| 黄浦区| 从江县| 五台县| 高唐县| 富源县| 出国| 石城县| 江孜县|