項目做到後期了,發現數據到數據在不斷增長,現在是1000w多條,估計以後數據還會增加,可是現在數據庫到索引也加了,在數據庫做一個大大查詢時,前台web會超時,很郁悶,怎麼辦呢,第一個想法是分庫,可是分庫這個表關聯的太多了,並且這個表又是一對多中多大一方,不好處理,在google上工作了一天,終於讓我發現了sql2005的新特性 :表分區功能
表分區功能,相當於把一張表大數據無限極細化到多張表上,多個驅動上,但是訪問時卻還是一樣的訪問,因為 其實本身並未新建任何表,並且它還可以訪問其他服務器以提高速度
好了,廢話不談了,下面的步驟 依次跟著來:
1.為數據庫新建多個文件組,可分布於不同大磁盤上
ALTER DATABASE [D]2.一個文件組可放置多個文件,下面,只為一個文件組分配一個文件
ALTER DATABASE [D] ADD FILE ( NAME = N'GF1', FILENAME = N'E:\D\D1\DGF1.ndf' , SIZE = 5MB , FILEGROWTH = 10% )3.創建分區函數
CREATE PARTITION FUNCTION [D_PARTITIONFUNC] (int)4.將分區函數綁定到分區架構上
CREATE PARTITION SCHEME [D_PARTITION_SHEME]注意primary表示主文件組,既是數據庫建立大時候默認的
5.刪除主鍵
ALTER TABLE dbo.B DROP CONSTRAINT [PK_B]上一步可以不做,不過我個人推薦,因為分區鍵(分區函數的參數)必須建立在主鍵上
6.開始對表分區
ALTER TABLE dbo.B add CONSTRAINT [PK_B] PRIMARY KEY CLUSTERED (ID)OK,完成
B表中主鍵ID,好了
現在即使是幾百G的數據也不會有問題了
下面還有更改分區的方法以及查詢分區分布大方法,現在沒時間寫了,
下次再補上吧。