偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

綜合分析DB2性能優(yōu)化的因素

數據庫 數據庫運維
DB2 性能優(yōu)化是一件較為復雜的綜合性的工作 , 需要對問題的根源作全方位的探索和思考。同時也需要較深厚的數據庫管理經驗與優(yōu)化知識。

【51CTO綜述】IBM 為社區(qū)提供了DB2 免費版本 DB2 Express-C,它提供了與 DB2 Express Edition 相同的核心數據特性,為構建和部署應用程序奠定了堅實的基礎。

DB2 性能優(yōu)化是一件較為復雜的綜合性的工作 , 需要對問題的根源作全方位的探索和思考。同時也需要較深厚的數據庫管理經驗與優(yōu)化知識。這對于初學者來說可能有些勉為其難。但是在很多情況下,隨著 DB2 數據庫中的數據量的不斷增長或者用戶數的激增,數據庫系統的性能會顯著下降,而此時快速定位性能上的瓶頸則至關重要。下面簡要地介紹一下 DB2 的調優(yōu)的一些因素和工具,以及一些原理,使初學者對性能優(yōu)化能夠有一個大致的了解。

DB2 的性能優(yōu)化可以從三個方面分析:內存,CPU 和 I/O 。

內存因素

在內存方面,主要是考慮緩沖池 (BUFFERPOOL) 的使用。緩沖池是一片用來緩沖從磁盤上讀取的數據和索引的內存區(qū)域,這些數據和索引信息在緩沖池中進行運算后最終還要寫回磁盤。緩沖池的頁面大小有四種 (4K,8K,16K,32K),分別對應四種不同頁面大小的表空間。緩沖池的大小決定了能夠從磁盤上緩沖數據的容量大小。當然緩沖池也不是越大越好,緩沖池過大可能會導致連接數據庫的時間過長,因為在連接數據庫時要為數據庫的緩沖池分配內存空間。可以通過計算緩沖池的命中率來評估緩沖池的使用效率:緩沖池命中率 =(1-(( 數據物理讀 + 索引物理讀 )/( 數據邏輯讀 + 索引邏輯讀 ))) *100%,緩沖池命中率越大說明緩沖池的使用效率高。緩沖池命中率太小說明緩沖池太小應當調大。其中的數據物理讀,索引物理讀以及數據邏輯讀和索引邏輯讀都可以從緩沖池的快照中獲取。

在內存方面要考慮的另外幾個重要因素是排序堆 (SORTHEAP),鎖列表 (LOCKLIST), 日志緩沖區(qū) (LOGBUFSZ) 。排序堆在查詢結果帶有排序選項而沒有相關索引對應時將會被使用,排序堆太小會產生排序溢出 (Overflowed), 那些在排序堆中裝不下的排序數據將會溢出到一個臨時表中,這會使性能下降。與 SORTHEAP 參數相關的是 SHEAPTHRES_SHR 和 SHEAPTHRES,SHEAPTHRES_SHR 限制了一個數據庫中共享排序的***內存,SHEAPTHRES 限制了私有排序的***內存。 LOCKLIST 指的是一個數據庫中用來存放鎖的內存空間,當這個參數設得過小會導致在鎖用光這部分資源后導致鎖升級(即多個行鎖轉化為一個表鎖來釋放出更多的資源)。這會導致系統的并行性下降,很多應用連接出現掛起,使得系統的性能衰退。所以盡可能調大 LOCKLIST 參數,這里需要指出 LOCKLIST 指的并不是鎖的個數,而是以數據庫頁為單位的一片內存區(qū)域(在 32 位系統中每個鎖需要 96 個字節(jié),鎖上加鎖的話每個鎖則需 48 個字節(jié)。在 64 位系統中每個鎖需要 128 個字節(jié),鎖上加鎖的話每個鎖則需 64 個字節(jié))。與 LOCKLIST 參數對應的是 MAXLOCKS 參數,MAXLOCKS 定義的是一個百分數,它指定了一個應用程序所能占用的***的鎖空間占 LOCKLIST 的比例。日志緩沖區(qū) (LOGBUFSZ) 指的是日志在寫到磁盤以前用于緩沖的一片內存空間,這樣可以減少寫日志帶來的過多的 I/O 。

從版本 9 以后 DB2 推出了一個新特性自調節(jié)內存管理器 (STMM: Self Tuning Memory Manager), 這個特性使得很多內存參數如前面所述的 SORTHEAP,LOCKLIST,LOGBUFSZ 等進行自動調節(jié),當數據庫參數 SELF_TUNING_MEM 設為 ON, 這些參數設為 AUTOMATIC 即可以進行自動調整。這樣可以節(jié)省很多人工調整的時間。

CPU 因素

關于 CPU 因素首先是考慮 DB2 優(yōu)化器 (OPTIMIZER) 對訪問計劃 (ACCESS PLAN) 的分析與優(yōu)化。一般來說,一條 SQL 在執(zhí)行時首先會被解析,然后進行語義分析,進而重寫 SQL, 優(yōu)化器會對重寫過的 SQL 進行基于成本的分析最終選擇最有效的訪問計劃。最終生成可執(zhí)行代碼(執(zhí)行計劃)來執(zhí)行這條語句。查詢訪問計劃的工具有很多,既有圖形化工具 Visual Explain,也有命令 db2exfmt 來格式化解釋表 (Explain tables) 中的數據生成 ACCESS PLAN 。還有命令 db2expln 查詢 ACCESS PLAN 。

在 DB2 里的優(yōu)化級別分為九級,缺省是第五級,級別越高優(yōu)化器分析得程度越深。這個級別有數據庫配置參數 DFT_QUERYOPT 決定。并不是級別設得越高性能越好,因為對于一些較為簡單的 SQL 語句,如果優(yōu)化級別過高那么花在優(yōu)化 SQL 上的時間就會過長,而執(zhí)行時間相對來說很短,有些得不償失。在選擇訪問計劃時,索引掃描的效率往往會比表掃描要高,所以索引的優(yōu)化也是值得注意的。正確的建立索引會使查詢性能大幅度的提高。

在 DB2 中連接 (JOIN) 分為三種:嵌套循環(huán)連接 (nest-loop join), 合并連接 (merge-join), 散列表連接 (hash-join) 。一般來說效率***的是嵌套循環(huán)連接,這種連接采用的是笛卡兒集,進行多次循環(huán)遍歷得到結果。而合并連接和散列表連接只進行一次循環(huán)遍歷,相對來說效率較高。其中散列表連接可以采用多個等式做為條件而合并連接只能采用單個等式作為條件。但是在有索引掃描的情況下嵌套循環(huán)連接效率則更高。當優(yōu)化級別等于零時,連接只能采用嵌套循環(huán)連接, 當優(yōu)化級別大于等于 1 時,連接可以采用合并連接。當優(yōu)化級別大于 5 時連接可以采用散列表連接。散列表連接要求 SORTHEAP 比較大,因為要為生成散列表準備空間。

在考慮 CPU 因素時還要考慮 CPUSPEED 這個參數,這個參數標明了 CPU 的運行速度,它會幫助優(yōu)化器評估***的訪問計劃。一般來說這個參數設為 -1,優(yōu)化器將自動計算 CPU 的速度。另外運用多分區(qū)的特性可以把一個數據庫分布到多臺機器上,這樣可以充分利用多臺機器的 CPU 的資源對應用程序的事務進行并行處理,從而提高數據庫的性能。

I/O 因素

關于 I/O 因素要考慮以下幾個方面:首先是磁盤的 I/O, 為了能夠***化磁盤的 I/O 可以把數據,索引以及日志分別放在不同的硬盤上。因為在一個事務中數據和索引可能需要同時訪問,而在事務提交時,數據和日志要同時寫入磁盤,而且有可能索引也要同步維護,所以將它們放在不同的硬盤上可以使它們的讀寫并行運行,從而不致使磁盤成為瓶頸。同時選擇數據庫管理表空間 (DMS) 要比系統管理表空間 (SMS) 性能要好,因為讀寫 SMS 需要經過操作系統的 cache 再到緩沖池,而可以采用裸設備的 DMS 則不需要。但是 DMS 相對 SMS 來說維護起來較麻煩。

其次要考慮的是日志文件的大小,當數據庫在寫事務日志時當一個日志文件寫滿后會轉向另外一個日志文件,這種日志文件的切換會造成操作系統上的開銷。所以應當盡量將日志文件大小(LOGFILSIZ)設得大一些,這樣可以減少日志文件切換的次數。但是日志文件過大難免會造成一些空間的浪費。

同時也要考慮到隔離級別的因素,在 DB2 中隔離級別分成 4 級:可重復的讀,讀穩(wěn)定性,游標穩(wěn)定性和未提交的讀。這四種級別逐個降低。越高的隔離級別越能保證數據完整性,但卻會降低并發(fā)性,所以應當綜合權衡后做出決定。隔離級別可以通過如下命令來改變:

CHANGE ISOLATION TO=CS|RR|RS|UR

在連接方面還要考慮到代理和連接的關系,這也會影響到數據庫的并發(fā)性,具體信息可以參考資源部分。

***要考慮的還是關于多分區(qū)的特性。在多分區(qū)數據庫中,一個請求首先傳到協調分區(qū),然后由協調分區(qū)將請求細分成多個部分發(fā)送到其他分區(qū),這樣數據可以在各個分區(qū)進行并行讀寫,實現 I/O ***化。

性能優(yōu)化相關工具

在 DB2 中有很多和性能優(yōu)化相關的工具和命令,下面簡單地介紹幾種:

  • SNAPSHOT : 這是 DB2 獲取數據庫信息快照的一種方法。它能夠獲取在數據庫中關于緩沖池,鎖,排序以及 SQL 等等信息。 DBA 可以通過獲取這些信息來對數據庫中的各組件進行評估來分析問題的瓶頸。
  • DB2PD : 這個命令是用來分析數據庫的當前狀態(tài),它帶有很多參數??梢杂脕矸治鰬贸绦?,代理,內存塊,緩沖池,日志及鎖狀態(tài)等信息。
  • RUNSTATS : 這個命令是用來收集數據庫中數據的***統計信息,并更新到系統表中。更新統計信息將會促使優(yōu)化器選擇更加符合實際的高效的訪問計劃,從而提高工作效率。
  • REORG : 這個命令用來重新整理數據庫中數據和索引的碎片,使其在物理上可以得以按一定規(guī)則排列,這樣可以加快檢索的速度。
  • DB2DART : 這個命令是一個數據庫的分析和報告工具,它用來檢查表空間,索引以及數據庫結構的正確性,分析在性能問題上的一些原因。
  • DB2SUPPORT : 這個命令用來收集 DB2 和操作系統的所有相關信息并生成一個壓縮文件,可傳送給優(yōu)化人員進行分析。

還有一些 DB2 中其他的文件可以用來分析性能問題,比如說診斷日志,追蹤文件等。一些第三方的工具也可供參考,如“ tivoli monitor for db2 ”, QUEST 等等。

其他性能因素

XML 的優(yōu)化: 在 DB2 V9 以后引入了純 XML 的數據類型,這是一種層次型數據類型。這和傳統的關系型數據類型不一樣,在 V9 以前 DB2 存儲 XML 數據使用 CLOB 數據類型,應用程序在存取 XML 數據的時候必須先要解析 XML 再使用其數據。而在純 XML 類型中,可以直接讀取其中的元素,這樣性能會有較大的提高。另外針對純 XML 還有 XML 的索引,也會增大存取的性能。

操作系統: 數據庫存在于操作系統之上,操作系統的性能將直接影響到數據庫的運行效率,因此優(yōu)化操作系統也是優(yōu)化數據庫的一個重要過程。在操作系統級別上可以對內存進行優(yōu)化,比如說對系統共享內存,信號量以及虛擬內存的設置等等都可以影響到數據庫的性能。同時在磁盤的分布上也會影響到數據庫 I/O 效率。

網絡: 網絡將會影響到數據庫的 I/O 性能,當數據通過網絡在客戶端和服務器端進行傳送時,網絡上出現瓶頸會導致數據庫 I/O 性能顯著下降。所以選擇優(yōu)良的網絡設備以及配置良好的網絡環(huán)境對數據庫性能相當重要。同時也要考慮到防火墻的因素,有時防火墻會阻擋來自某些 IP 的數據包。

編者介紹

李越 (liyyue@cn.ibm.com), 軟件工程師, IBM

李越 IBM 中國軟件開發(fā)中心 WebSphere Federation Server 測試部門軟件工程師。曾在 developerWorks 中國發(fā)表過有關優(yōu)化 DB2 的代理和連接的文章。

王飛鵬, 軟件工程師, WSO2 Inc

王飛鵬來自 IBM 中國 Avalanche 團隊,目前從事 Oracle/Teradata 數據庫遷移到 DB2 數據庫的售前咨詢和客戶支持工作;有為電信、地鐵、中央部委實施數據庫、數據倉庫的成功經驗;是 DB2 性能優(yōu)化、Oracle 遷移到 DB2、DB2 9.7訓練營、IBM Information Server 訓練營、DB2 大學生訓練營的培訓講師;擁有軟件專利3項,著有《DB2設計與性能優(yōu)化-原理、方法和實踐》一書。

狄浩, 軟件工程師, WSO2 Inc

狄浩,IBM 中國軟件開發(fā)中心軟件工程師,主要從事 IBM CM 內容管理產品的相關工作,最近對 DB2 的性能調優(yōu)比較感興趣。

張蓉蓉 (rrzhang@cn.ibm.com), 軟件工程師, WSO2 Inc

 

 

責任編輯:艾婧 來源: 51CTO
相關推薦

2010-11-03 15:19:46

DB2裝入命令

2011-03-21 09:51:04

DB2性能優(yōu)化

2011-05-27 15:24:28

DB2

2010-08-17 17:29:06

DB2性能優(yōu)化

2011-05-27 16:00:10

DB2

2011-03-14 17:18:44

事務DB2性能

2011-05-17 10:27:19

DB2性能事務類型

2011-05-27 15:11:04

DB2

2010-11-04 15:39:40

DB2 SQL語句

2009-02-26 09:34:16

性能優(yōu)化DB2數據庫

2011-03-02 17:56:40

DB2數據庫

2010-08-09 13:22:40

DB2應用系統

2010-11-02 13:09:42

DB2性能優(yōu)化

2010-11-04 15:34:20

DB2索引優(yōu)化

2010-08-31 15:08:14

DB2INSERT優(yōu)化

2011-04-08 15:00:20

DB2數據庫

2015-10-23 16:32:29

DB2數據庫性能

2010-09-06 15:00:40

DB2 9 XML

2010-08-17 09:11:42

DB2數據庫備份性能

2010-08-10 15:30:21

點贊
收藏

51CTO技術棧公眾號