亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

SQL Server 2005對海量數據處理

添加時間:2013-4-20 16:30:59  添加: 思海網絡 
 超大型數據庫的大小常常達到數百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、數據表、數據庫

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站