iT邦幫忙

DAY 2
9

Oracle and MS SQL系列 第 2

[Day 2]SQL SERVER善用Partition Table#1簡介

SQL SERVER2008企業版功能
善用Partition Table,可以改善資料維護作業效率,同時提高前端查詢效能也能降低DBA管理上的負擔,可說好處多多。
由於最近都在摸SQL2008,大家都說打鐵要趁熱(年紀大記憶力不好),就先來分享SQL,Oracle後續在補上。
小弟最近剛好幫朋友解決了一個效能上的問題,使用Partition Table改善傳統資料維護作業效率。

Partition Table不管是在Oracle(Enterprise版本)或SQL Server都是屬於企業級的技術(Enterprise或developer 版本)

Oracle partition talbe11g新增滿多功能,使用過Oracle partition table後會覺得SQL Server功能似乎有點少

Oracke11g增加partition advisor、system parition和interval partition...等(oracle說太多~XD,回歸主題)

anyway~~小弟個人認為使用Enterprise版本,則應該好好利用相關進階技術

改善以往資料庫所遇到的瓶頸,不然雖使用企業版資料庫,卻只發揮Express版功用

我想老闆會說:那不如安裝Express,還可以省下一大筆授權費用。

這篇簡單介紹一下SQL Server Partition Table

簡介:

Partition table應用在資料龐大的Table和index,可以提升管理性和讀寫效能

同時也可以維護資料完整性,SQL2008資料以水平分割

table和index都會被視為單一邏輯實體(單一index and partition table必須在同一資料庫中)

分割大型資料表或索引將更易於管理,因為分割可讓您快速和有效率地管理和存取資料子集

同時又可維護資料集合的完整性。透過使用資料分割可以縮短作業時間

在資料子集上執行的維護作業也將會更有效率,因為這些作業只處理所需的資料,而非整個資料表。

為什麼要使用partition table

為了提高讀寫性能,提高資料庫的效率

什麼狀況該使用partition table?

一般來說下列條件成立就可能適用partition talbe

  1. 資料表包含或應包含以不同方式使用的許多資料

  2. 針對資料表的查詢或更新並未如預期執行,或是維護成本超過預先定義的維護期限。

例如,如果目前月份的資料主要是使用 INSERT、UPDATE、DELETE 和 MERGE 作業

而前面的月份主要是使用 SELECT 查詢,如果能以月份分割此資料表,管理起來會比較容易

如果在資料表上的一般維護作業只需針對資料子集,此優點可能特別有用

如果未分割資料表,這些作業可能在整個資料集上耗用許多資源。透過資料分割

像索引重建和重組等維護作業可在單一月份的唯寫資料上執行,而唯讀資料仍然可在線上存取。

使用partition table一定可以提高效率嗎?

Partition talbe並不一定總能提高效率(水能載舟亦能覆舟),這和實際資料分部和查詢條件情況有關係。
partiton table技術概念,是把一大塊table切割成n小塊

這樣查詢的時候可以很快定位到某一小塊上(減少IO),另一方面CPU比硬碟IO快很多倍

而又有多個硬碟(多讀寫頭),或者是RAID,可讓資料庫有效應用CPU同時去讀寫不同的硬碟,這樣才有可能提高效率。
但有些時候並不是這樣,這又要考慮前端的SQL語法where條件

假如用時間分區,而我用時間來查詢,這樣一定可以提高查詢效率

但如果是要查某樣產品在最近三年內的銷售狀況的話,這樣效能就不一定會提高

因為資料分佈在不同的分區上(須跨分區掃描並計算)。

相關system views

contains details for each partitioning function

sys.partition_functions
contains data for each value range used in the partitiong functions

sys.partition_range_values
contains associations to map partitions to filegroups

sys.destination_data_spaces

contains filegroup (which is a data space) details
sys.filegroups

小弟只是簡單介紹(還有partiton index),更多更詳細的資訊可參考MSDN Library

資料分割資料表與索引

資料表與索引組織

下篇我將測試patition table所帶來的效率

原本要花3個多小時的資料維護作業,利用Partition Table後,整個流程30分鐘內搞定(準時下班閃人XD)

也終於有感受到花大錢買企業版的好處,以及SQL2000升級SQL2008的價值所在。


上一篇
[Day 1]Oracle 10g DG第一章Oracle DataGuard Overview
下一篇
[Day 3]SQL SERVER善用Partition Table#2測試
系列文
Oracle and MS SQL34

2 則留言

0
Ken(Bigcandy)
iT邦大師 1 級 ‧ 2009-10-07 11:29:56

XD
我們的版權是標準版~~

0
rico
iT邦新手 2 級 ‧ 2009-10-07 20:24:32

太可惜了
這是企業版才有的技術
^^

我要留言

立即登入留言