色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

SQL Server 2005對海量數據處理

瀏覽:99日期:2023-11-02 19:38:09

超大型數據庫的大小常常達到數百GB,有時甚至要用TB來計算。而單表的數據量往往會達到上億的記錄,并且記錄數會隨著時間而增長。這不但影響著數據庫的運行效率,也增大數據庫的維護難度。除了表的數據量外,對表不同的訪問模式也可能會影響性能和可用性。這些問題都可以通過對大表進行合理分區得到很大的改善。當表和索引變得非常大時,分區可以將數據分為更小、更容易管理的部分來提高系統的運行效率。如果系統有多個CPU或是多個磁盤子系統,可以通過并行操作獲得更好的性能。所以對大表進行分區是處理海量數據的一種十分高效的方法。本文通過一個具體實例,介紹如何創建和修改分區表,以及如何查看分區表。

1 SQL Server 2005

SQL Server 2005是微軟在推出SQL Server 2000后時隔五年推出的一個數據庫平臺,它的數據庫引擎為關系型數據和結構化數據提供了更安全可靠的存儲功能,使用戶可以構建和管理用于業務的高可用和高性能的數據應用程序。此外SQL Server 2005結合了分析、報表、集成和通知功能。這使企業可以構建和部署經濟有效的BI解決方案,幫助團隊通過記分卡、Dashboard、Web Services和移動設備將數據應用推向業務的各個領域。無論是開發人員、數據庫管理員、信息工作者還是決策者,SQL Server 2005都可以提供出創新的解決方案,并可從數據中獲得更多的益處。

它所帶來的新特性,如T-SQL的增強、數據分區、服務代理和與.Net Framework的集成等,在易管理性、可用性、可伸縮性和安全性等方面都有很大的增強。

2 表分區的具體實現方法

表分區分為水平分區和垂直分區。水平分區將表分為多個表。每個表包含的列數相同,但是行更少。例如,可以將一個包含十億行的表水平分區成 12 個表,每個小表表示特定年份內一個月的數據。任何需要特定月份數據的查詢只需引用相應月份的表。而垂直分區則是將原始表分成多個只包含較少列的表。水平分區是最常用分區方式,本文以水平分區來介紹具體實現方法。

水平分區常用的方法是根據時期和使用對數據進行水平分區。例如本文例子,一個短信發送記錄表包含最近一年的數據,但是只定期訪問本季度的數據。在這種情況下,可考慮將數據分成四個區,每個區只包含一個季度的數據。

2.1 創建文件組

建立分區表先要創建文件組,而創建多個文件組主要是為了獲得好的 I/O 平衡。一般情況下,文件組數最好與分區數相同,并且這些文件組通常位于不同的磁盤上。每個文件組可以由一個或多個文件構成,而每個分區必須映射到一個文件組。一個文件組可以由多個分區使用。為了更好地管理數據(例如,為了獲得更精確的備份控制),對分區表應進行設計,以便只有相關數據或邏輯分組的數據位于同一個文件組中。使用 ALTER DATABASE,添加邏輯文件組名:

ALTER DATABASE [DeanDB] ADD FILEGROUP [FG1]

DeanDB為數據庫名稱,FG1文件組名。創建文件組后,再使用 ALTER DATABASE 將文件添加到該文件組中:

ALTER DATABASE [DeanDB] ADD FILE ( NAME = N'FG1', FILENAME = N'C:DeanDataFG1.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [FG1]

類似的建立四個文件和文件組,并把每一個存儲數據的文件放在不同的磁盤驅動器里。2.2 創建分區函數

創建分區表必須先確定分區的功能機制,表進行分區的標準是通過分區函數來決定的。創建數據分區函數有RANGE “LEFT | / RIGHT”兩種選擇。代表每個邊界值在局部的哪一邊。例如存在四個分區,則定義三個邊界點值,并指定每個值是第一個分區的上邊界 (LEFT) 還是第二個分區的下邊界 (RIGHT)[1]。代碼如下:

CREATE PARTITION FUNCTION [SendSMSPF](datetime) AS RANGE RIGHT FOR VALUES ('20070401', '20070701', '20071001')

2.3 創建分區方案

創建分區函數后,必須將其與分區方案相關聯,以便將分區指向至特定的文件組。就是定義實際存放數據的媒體與各數據塊的對應關系。多個數據表可以共用相同的數據分區函數,一般不共用相同的數據分區方案。可以通過不同的分區方案,使用相同的分區函數,使不同的數據表有相同的分區條件,但存放在不同的媒介上。創建分區方案的代碼如下:

CREATE PARTITION SCHEME [SendSMSPS] AS PARTITION [SendSMSPF] TO ([FG1], [FG2], [FG3], [FG4])

2.4 創建分區表

建立好分區函數和分區方案后,就可以創建分區表了。分區表是通過定義分區鍵值和分區方案相聯系的。插入記錄時,SQL SERVER會根據分區鍵值的不同,通過分區函數的定義將數據放到相應的分區。從而把分區函數、分區方案和分區表三者有機的結合起來。創建分區表的代碼如下:

CREATE TABLE SendSMSLog

([ID] [int] IDENTITY(1,1) NOT NULL,

[IDNum] [nvarchar](50) NULL,

[SendContent] [text] NULL

[SendDate] [datetime] NOT NULL,

) ON SendSMSPS(SendDate)

2.5 查看分區表信息

系統運行一段時間或者把以前的數據導入分區表后,我們需要查看數據的具體存儲情況,即每個分區存取的記錄數,那些記錄存取在那個分區等。我們可以通過$partition.SendSMSPF來查看,代碼如下:

SELECT $partition.SendSMSPF(o.SendDate)

AS [Partition Number]

, min(o.SendDate) AS [Min SendDate]

, max(o.SendDate) AS [Max SendDate]

, count(*) AS [Rows In Partition]

FROM dbo.SendSMSLog AS o

GROUP BY $partition.SendSMSPF(o.SendDate)

ORDER BY [Partition Number]

在查詢分析器里執行以上腳本,結果如圖1所示:

圖1 分區表信息

2.6 維護分區

分區的維護主要設計分區的添加、減少、合并和在分區間轉換。可以通過ALTER PARTITION FUNCTION的選項SPLIT,MERGE和ALTER TABLE的選項SWITCH來實現。SPLIT會多增加一個分區,而MEGRE會合并或者減少分區,SWITCH則是邏輯地在組間轉換分區。

3 性能對比

我們對2650萬數據,存儲空間占用約4G的單表進行性能對比,測試環境為IBM365,CPU 至強2.7G*2、內存 16G、硬盤 136G*2,系統平臺為Windows 2003 SP1+SQL Server 2005 SP1。測試結果如表1:

表1:分區和未分區性能對比表(單位:毫秒)

測試項目 分區 未分區

1 16546 61466

2 13 33

3 20140 61546

4 17140 61000

說明:

1:根據時間檢索某一天記錄所耗時間

2:單條記錄插入所耗時間

3:根據時間刪除某一天記錄所耗時間

4:統計每月的記錄數所需時間

從表1可以看出,對分區表進行操作比未分區的表要快,這是因為對分區表的操作采用了CPU和I/O的并行操作,檢索數據的數據量也變小了,定位數據所耗時間變短。

4 結束語

對海量數據的處理一直是一個令人頭痛的問題。分離的技術是所有設計者們首先考慮的問題,不管是分離應用程序功能還是分離數據訪問,如果加以了合理規劃,都能十分有效的解決大數據表的運行效率低和維護成本高等問題。SQL Server 2005新增的表分區功能,可以對數據進行合理分區,當用戶在訪問部分數據時,SQL Server最佳化引擎可以根據數據的實體存放,找出最佳的執行方案,而不至于大海撈針。

標簽: Sql Server 數據庫
主站蜘蛛池模板: 99国产高清久久久久久网站 | 欧美精品束缚一区二区三区 | 国产一级久久久久久毛片 | 久久国产精品99久久久久久牛牛 | 欧美一级片手机在线观看 | 热re66久久精品国产99热 | 亚洲图片视频在线 | 韩国美女高清爽快一级毛片 | 成人无遮挡毛片免费看 | 国产一级毛片外aaaa | 亚洲成年人免费网站 | 国产亚洲精品午夜一区 | 中文字幕日韩精品有码视频 | 免费播放欧美毛片欧美aaaaa | 国产亚洲人成网站在线观看 | 国产伦理久久精品久久久久 | 色精品一区二区三区 | 国产一区二区三区在线免费 | 永久免费不卡在线观看黄网站 | 欧美三级欧美成人高清www | 欧美一级纶理片免费 | 国产综合视频在线观看一区 | 日本高清视频在线观看 | 香港三级日本三级人妇网站 | 一区二区三区免费视频播放器 | 日韩加勒比在线 | 国产成人亚洲综合欧美一部 | 在线不卡一区 | 九九国产在线 | 国产欧美日韩不卡在线播放在线 | 黄色影院在线观看视频 | 国产精品日本不卡一区二区 | 毛片免费观看日本中文 | 久久厕所精品国产精品亚洲 | 久久91精品国产91久久小草 | 在线免费观看一级毛片 | 男操女视频 | 中文字幕一区二区三区 精品 | 长腿美女被啪的欲仙欲死视频 | 亚洲第一免费播放区 | 亚洲一区免费 |