|
一、場景
這一段時間使用SQL Server 2005 對幾個系統(tǒng)進行表分區(qū),這幾個系統(tǒng)都有一些特點,比如數(shù)據(jù)庫某張表持續(xù)增長,給數(shù)據(jù)庫帶來了很大的壓力。
現(xiàn)在假如提供一臺新的服務器,那么我們應該如何規(guī)劃這個數(shù)據(jù)庫呢?應該如何進行最小宕機時間的數(shù)據(jù)庫轉(zhuǎn)移呢?如果規(guī)劃數(shù)據(jù)庫呢?
二、環(huán)境準備
要搭建一個好的系統(tǒng),首先要從硬件和操作系統(tǒng)出發(fā),好的設置和好的規(guī)劃是高性能的前提,下面我就來說說自己的一些看法,歡迎大家提出異議;
1) 對磁盤做RAID0(比如3*300G),必要時可以考慮RAID5、RAID10;
2) 使用兩張千兆網(wǎng)卡,一張用于外網(wǎng),一張用于內(nèi)網(wǎng)(這也需要千兆路由器的配合);
3) 邏輯分區(qū)C為系統(tǒng)分區(qū)(50G),邏輯分區(qū)D為程序安裝分區(qū)(50G),邏輯分區(qū)E為數(shù)據(jù)庫文件邏輯分區(qū);
4) 安裝Microsoft Windows Server 2003, Enterprise Edition SP2(x64)操作系統(tǒng);
5) D盤格式化的時候使用默認分配單元大小,E盤格式為64k分配單元;
6) 安裝Microsoft SQL Server 2005(x64)數(shù)據(jù)庫;
7) 在我們網(wǎng)上鄰居-本地連接-屬性-Microsoft網(wǎng)絡的文件和打印機共享-最大化網(wǎng)絡應用程序數(shù)據(jù)吞吐量(勾選上);
8) 運行-gpedit.msc-Windows設置-安全設置-本地策略-用戶權(quán)限分配-內(nèi)存中鎖定頁面-設置用戶組(比如Administrators);
9) 運行-services.msc,設置啟動類型為手動,并且停止除了SQL Server (MSSQLSERVER)之外的SQL Server服務,除非你對某些服務需要啟動,比如作業(yè)、全文索引;
10) 設置虛擬內(nèi)存大小,我通常設置為4096MB-8192MB;
三、前期工作
在進行分區(qū)之前,我們首先要分析這個表的數(shù)據(jù)量(行數(shù))有多少?這個表的存儲空間(物理存儲)有多少?需要確定分區(qū)文件多大為合理?還需要確認我們按照表中哪個字段進行分區(qū)?后期的維護是否需要對分區(qū)進行管理(比如交換分區(qū)進行數(shù)據(jù)歸檔等)?
假設我們決定以自增ID作為分區(qū)字段(其實應該叫分區(qū)數(shù)值類型),我們就可以使用上面的行數(shù)和存儲空間來計算我們的分區(qū)邊界值了,因為我們確認了分區(qū)文件的大小。比如我們表A記錄為:1.5億,占用空間為:700G,如果我們可以接受的文件大小為10G(這個要根據(jù)如果需要做交換分區(qū)和一些存儲空間、硬盤等信息確認的),那么我們的分區(qū)值可以這樣計算:1.5億/(700G/10G)≈200W,也就是:200W,400W,600W等等;
分區(qū)文件在創(chuàng)建的時候就應該初始化為包含分區(qū)邊界值數(shù)據(jù)大小,比如上面的分區(qū)文件可以設置為10G,這樣就不用重新分配空間了。也可以使用定量增長,比如2048MB。
在設置自增ID為分區(qū)字段,那么通常我們會讓ID成為聚集索引,而且設置填充因子為100%,這樣我們的數(shù)據(jù)頁就不會有空白了。
如果后期的維護需要對分區(qū)進行管理,比如交換分區(qū)進行數(shù)據(jù)歸檔,交換分區(qū)是需要索引對齊的,而索引對齊有兩種:索引對齊;按存儲位置對齊的表。
索引對齊:假如你想讓數(shù)據(jù)與索引分開到不同的文件,可以使用兩個不同的分區(qū)方案,但是使用同一個分區(qū)函數(shù),這樣就把索引分開了。(如圖1)
存儲位置對齊:創(chuàng)建非聚集索引的時候設置【數(shù)據(jù)空間規(guī)范】,兩個索引對象可以使用相同的分區(qū)架構(gòu),并且具有相同分區(qū)鍵的所有數(shù)據(jù)行最后將位于同一個文件組中。這就叫存儲位置對齊。(數(shù)據(jù)和索引在同一個文件中)(如圖2)
(圖1)
(圖2)
四、分區(qū)步驟
下面提供了創(chuàng)建分區(qū)的代碼,其中包括模板還有例子(Ext),這里最主要是注意一些命名規(guī)范,希望對大家有用:
步驟1:為MyDataBase數(shù)據(jù)庫創(chuàng)建2個文件組,如果你不想用PRIMARY作為分區(qū),你可以創(chuàng)建多一個文件組,文件組=分區(qū)值個數(shù)+1;
--1.創(chuàng)建文件組
ALTER DATABASE [數(shù)據(jù)庫名]
ADD FILEGROUP [FG_表名_字段名_分區(qū)編號]
--Ext
ALTER DATABASE [MyDataBase]
ADD FILEGROUP [FG_User_Id_1]
ALTER DATABASE [MyDataBase]
ADD FILEGROUP [FG_User_Id_2]
it知識庫:SQL Server 2005 分區(qū)模板與實例,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。