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

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

            【IT專家網(wǎng)獨家】你是否在千方百計優(yōu)化SQL Server 數(shù)據(jù)庫的性能?如果你的數(shù)據(jù)庫中含有大量的表格,把這些表格分區(qū)放入獨立的文件組可能會讓你受益匪淺。SQL Server 2005引入的表分區(qū)技術(shù),讓用戶能夠把數(shù)據(jù)分散存放到不同的物理磁盤中,提高這些磁盤的并行處理性能以優(yōu)化查詢性能。

            SQL Server數(shù)據(jù)庫表分區(qū)操作過程由三個步驟組成:

            1. 創(chuàng)建分區(qū)函數(shù)

            2. 創(chuàng)建分區(qū)架構(gòu)

            3. 對表進(jìn)行分區(qū)

            下面將對每個步驟進(jìn)行詳細(xì)介紹。

            步驟一:創(chuàng)建一個分區(qū)函數(shù)

            此分區(qū)函數(shù)用于定義你希望SQL Server如何對數(shù)據(jù)進(jìn)行分區(qū)的參數(shù)值([u]how[/u])。這個操作并不涉及任何表格,只是單純的定義了一項技術(shù)來分割數(shù)據(jù)。

            我們可以通過指定每個分區(qū)的邊界條件來定義分區(qū)。例如,假定我們有一份Customers表,其中包含了關(guān)于所有客戶的信息,以一一對應(yīng)的客戶編號(從1到1,000,000)來區(qū)分。我們將通過以下的分區(qū)函數(shù)把這個表分為四個大小相同的分區(qū):  

          CREATE PARTITION FUNCTION customer_partfunc (int)
            AS RANGE RIGHT
            FOR VALUES (250000, 500000, 750000)

            這些邊界值定義了四個分區(qū)。第一個分區(qū)包括所有值小于250,000的數(shù)據(jù),第二個分區(qū)包括值在250,000到49,999之間的數(shù)據(jù)。第三個分區(qū)包括值在500,000到7499,999之間的數(shù)據(jù)。所有值大于或等于750,000的數(shù)據(jù)被歸入第四個分區(qū)。

            請注意,這里調(diào)用的"RANGE RIGHT"語句表明每個分區(qū)邊界值是右界。類似的,如果使用"RANGE LEFT"語句,則上述第一個分區(qū)應(yīng)該包括所有值小于或等于250,000的數(shù)據(jù),第二個分區(qū)的數(shù)據(jù)值在250,001到500,000之間,以此類推。

            步驟二:創(chuàng)建一個分區(qū)架構(gòu)

            一旦給出描述如何分割數(shù)據(jù)的分區(qū)函數(shù),接著就要創(chuàng)建一個分區(qū)架構(gòu),用來定義分區(qū)位置([u]where[/u])。創(chuàng)建過程非常直截了當(dāng),只要將分區(qū)連接到指定的文件組就行了。例如,如果有四個文件組,組名從"fg1"到"fg4",那么以下的分區(qū)架構(gòu)就能達(dá)到想要的效果:  

          CREATE PARTITION SCHEME customer_partscheme
            AS PARTITION customer_partfunc
            TO (fg1, fg2, fg3, fg4)

            注意,這里將一個分區(qū)函數(shù)連接到了該分區(qū)架構(gòu),但并沒有將分區(qū)架構(gòu)連接到任何數(shù)據(jù)表。這就是可復(fù)用性起作用的地方了。無論有多少數(shù)據(jù)庫表,我們都可以使用該分區(qū)架構(gòu)(或僅僅是分區(qū)函數(shù))。

            步驟三:對一個表進(jìn)行分區(qū)

            定義好一個分區(qū)架構(gòu)后,就可以著手創(chuàng)建一個分區(qū)表了。這是整個分區(qū)操作過程中最簡單的一個步驟。只需要在表創(chuàng)建指令中添加一個"ON"語句,用來指定分區(qū)架構(gòu)以及應(yīng)用該架構(gòu)的表列。因為分區(qū)架構(gòu)已經(jīng)識別了分區(qū)函數(shù),所以不需要再指定分區(qū)函數(shù)了。

            例如,使用以上的分區(qū)架構(gòu)創(chuàng)建一個客戶表,可以調(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)知識就足夠了。記住!編寫能夠用于多個表的一般的分區(qū)函數(shù)和分區(qū)架構(gòu)就能夠大大提高可復(fù)用性。

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

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


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

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 梧州市| 兴安县| 漳平市| 来凤县| 天峨县| 两当县| 集贤县| 津市市| 大安市| 锡林浩特市| 含山县| 衡东县| 吐鲁番市| 泗阳县| 班戈县| 神池县| 岳阳市| 石阡县| 吐鲁番市| 固原市| 中西区| 阜城县| 东辽县| 长海县| 昌江| 江孜县| 邵东县| 铜鼓县| 石楼县| 韶关市| 满洲里市| 西吉县| 武穴市| 黄骅市| 安仁县| 红河县| 思南县| 山丹县| 峨边| 六安市| 赤壁市|