程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQLSERVER2005用分區表幾何倍數提高網站性能

SQLSERVER2005用分區表幾何倍數提高網站性能

編輯:關於SqlServer

項目做到後期了,發現數據到數據在不斷增長,現在是1000w多條,估計以後數據還會增加,可是現在數據庫到索引也加了,在數據庫做一個大大查詢時,前台web會超時,很郁悶,怎麼辦呢,第一個想法是分庫,可是分庫這個表關聯的太多了,並且這個表又是一對多中多大一方,不好處理,在google上工作了一天,終於讓我發現了sql2005的新特性 :表分區功能

表分區功能,相當於把一張表大數據無限極細化到多張表上,多個驅動上,但是訪問時卻還是一樣的訪問,因為 其實本身並未新建任何表,並且它還可以訪問其他服務器以提高速度

好了,廢話不談了,下面的步驟 依次跟著來:

 1.為數據庫新建多個文件組,可分布於不同大磁盤上

ALTER DATABASE [D] 
ADD FILEGROUP [GF1]

2.一個文件組可放置多個文件,下面,只為一個文件組分配一個文件

ALTER DATABASE [D] ADD FILE ( NAME = N'GF1', FILENAME = N'E:\D\D1\DGF1.ndf' , SIZE = 5MB , FILEGROWTH = 10% )
 TO FILEGROUP [GF1]

3.創建分區函數

CREATE PARTITION FUNCTION [D_PARTITIONFUNC] (int) 
        AS RANGE LEFT FOR VALUES (200000,400000,500000)

4.將分區函數綁定到分區架構上

CREATE PARTITION SCHEME [D_PARTITION_SHEME]
AS PARTITION [D_PARTITIONFUNC]
TO ([PRIMARY],[GF1],[PRIMARY],[GF1])

注意primary表示主文件組,既是數據庫建立大時候默認的

5.刪除主鍵

ALTER TABLE dbo.B DROP CONSTRAINT [PK_B]

上一步可以不做,不過我個人推薦,因為分區鍵(分區函數的參數)必須建立在主鍵上

6.開始對表分區

ALTER TABLE  dbo.B add CONSTRAINT [PK_B] PRIMARY KEY CLUSTERED (ID)
ON [D_PARTITION_SHEME](ID)

OK,完成

B表中主鍵ID,好了

現在即使是幾百G的數據也不會有問題了

下面還有更改分區的方法以及查詢分區分布大方法,現在沒時間寫了,

下次再補上吧。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved