亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

講解DB2數據庫性能調整的十個實用技巧

2024-07-21 02:43:04
字體:
來源:轉載
供稿:網友
本文著重介紹了DB2數據庫性能調整的十個實用技巧,詳細內容請讀者參考下文。(本文主要針對e-business OLTP10個性能方面的Tips)

1. SQL COST ANALYSIS

許多情況下,一個簡單的SQL就可能讓DB2系統處于尷尬的狀態。調整參數也不能解決此問題。由于DBA很難去改變這些垃圾SQL的現狀,所以留給DBA的就是下面的情況:

(1). Change or add indexes

(2). Change clustering

(3). Change catalog statistics.

注:一個SQL語句的cost= 每次執行的資源代價*執行的次數。

目前,DBA面臨的挑戰就是要找到那些有很高cost的語句,并且盡力去減少它的代價??梢越柚鶧B2 Explain 工具或者DB2 UDB SQL Event Monitor數據來分析SQL語句的代價。尤其是對SQL Event Monitor的數據分析,但這么做需要耗費很大的精力和時間。

一般DBA的流程是:

(1). Create an SQL Event Monitor, write to file:

$> db2 "create event monitor SQLCOST for statements write to ..."

(2). Activate the event monitor (be sure ample free disk space is available):

$> db2 "set event monitor SQLCOST state = 1"

(3). Let the application run.

(4). Deactivate the event monitor:

$> db2 "set event monitor SQLCOST state = 0"

(5). Use the DB2-supplied db2evmon tool to format the raw SQL Event Monitor data (hundreds of megabytes of free disk space may be required depending on SQL throughput rates):

$> db2evmon -db DBNAME -evm SQLCOST

> sqltrace.txt

(6). Browse through the formatted file scanning for unusually large cost numbers, a time-consuming PRocess:

$> more sqltrace.txt

(7). Undertake a more complete analysis of the formatted file that attempts to identify unique statements (independent of literal values), each unique statement's frequency (how many times it occurred), and the aggregate of its total CPU, sort, and other resource costs. Such a thorough analysis could take a week or more on just a 30-minute sample of application SQL activity.

為了以最快的速度找到相應的SQL,我們可以考慮上文講過的一些方法:

針對第4個tip:計算每個交易從一個table里面取出的行數。如果數值很高,就可以找到相應的語句。

針對第3個tip:計算每個tablespace的asynchronous read percentage and physical I/O read rates.如果一個tablespace有很高的asynchronous read percentage 和高于平均的physical I/O read rates,那么有可能這個tablesapce里面有table scan情況。從catalog中可以找尋tablespace中相應的table(如果一個tablespace上只有一個表,那么很容易定位了),然后從SQL Event Monitor 中尋找相關的table。這樣也可以縮小范圍。

觀察DB2 Explain信息,尋找可疑的地方。有時候,經常執行的、而且是代價比較低的語句也會瘋狂占用系統資源!

很多時候,我們可以充分借助工具!這樣能省時省力。

Staying in Tune

需要特別注意的是,性能優化不能僅僅只是消除那些好的SQL語句,也要保證合理的物理構架,確保高性能的結果、內存分配在pool和heap中,I/O都在DISk之間平衡分布。

2. BUFFER POOL OPTIMIZATION

目前一般的系統內存都可以達到2G,4G,8G了,但是DB2缺省的IBMDEFAULTBP只有16M。在此情況下,一般可以建立一個buffer pool 給SYSCATSPACE catalog tablespace, 一個buffer pool給 TEMPSPACE tablespace, 至少兩個BP_RAND and BP_SEQ. 隨機存取的Tablespaces 應該有一個buffer pool來應付隨機的objectives,這就是 BP_RAND. 順序存取的Tablespaces (with asynchronous prefetch I/O) 應該建立一個buffer pool給sequential objectives, BP_SEQ. 也可以建立其它的buffer pools,這要根據應用來說。比如可以建立一個足夠大的buffer pool 來存放熱點經常存取的數據。有時候需要為大的table建立單一的buffer pool.

太小的buffer pool會導致大量的、不必要的物理I/O。太大的biffer pool有可能會產生系統paging,增加不必要的CPU管理內存開銷。

buffer pool的大與小是相對的,一個系統的buffer pool大小應該"合適的"!當達到diminishing return達到時,就是合適的。如果不是使用自動工具,應該有條理的測試buffer pool性能,比如命中率,I/O次數,物理I/O讀的比率,直到達到合適狀態。當然,應用是變化的,所以最優狀態不是不邊的,也是要定期的評估。

3. TABLESPACE ANALYSIS

tablespace snapshot對理解哪些數據被訪問和怎么訪問的有很大的價值。

db2 "get snapshot for tablespaces on DBNAME"

對每一個tablespace,要注意:

What is the average read time (ms)?

What is the average write time (ms)?

What percentage of the physical I/O is asynchronous (prefetched) vs. synchronous (random)?

What are the buffer pool hit ratios for each tablespace?

How many physical pages are being read each minute?

How many physical and logical pages are being read for each transaction?

對所有的tablespaces,注意:

Which tablespaces have the slowest read and write times? Why?

Containers on slow disks? Are container sizes unequal?

Are the access attributes, asynchronous versus synchronous access, consistent with expectations?

Randomly read tables should have randomly read tablespaces, meaning high synchronous read percentages, usually higher buffer pool hit ratios, and lower physical I/O rates.

對每個tablespace,要注意Prefetch size是Extent size的倍數。如果必要,可以修改tablespace的prefetch size。

顯示tablespace信息:db2 "list tablespaces show detail"

顯示containers 信息:db2 "list tablespace containers for N show detail"

4. TABLE ACCESS

要查出來每次查詢讀出的row,

1) db2 "get snapshot for database on DBNAME"

看到多少交易發生,the sum of Commit statements attempted + Rollback statements attempted

2) db2 "get snapshot for tables on DBNAME"

區分出交易讀出的row。divide the number of rows read by the number of transactions (RowsPerTX).OLTP一般每次交易從一個table里面讀出20 row,如果發現一個交易能讀出成百上千行數據,表掃描就可能出現,可能需要看看index是否需要。簡單情況下是運行runstats收集信息。

Sample output from "get snapshot for tables on DBNAME" follows:

Snapshot timestamp = 09-25-2000 4:47:09.970811

Database name= DGIDB

Database path= /fs/inst1/inst1/NODE0000/SQL00001/

Input database alias= DGIDB

Number of accessed tables= 8

Table List

Table Schema= INST1

Table Name= DGI_SALES_ LOGS_TB

Table Type= User

Rows Written= 0

Rows Read= 98857

Overflows= 0

Page Reorgs= 0

有很高的Overflows ,就需要re-org table。當一行寬度改變,可能DB2就會把一行放到不同的頁中。

5. SORT MEMORY

OLTP應該沒有大規模的sort,因為sort會消耗大量的CPU, I/O和時間。

缺省的SORTHEAP = 256*4K=1M,一般是足夠了。應該知道sort overflows 的數目和每個交易的sort number。

Db2 "get snapshot for database on DBNAME"

察看如下項目:

Total sort heap allocated= 0

Total sorts = 1

Total sort time (ms)= 8

Sort overflows = 0

Active sorts = 0

Commit statements attempted = 3

Rollback statements attempted = 0

Let transactions = Commit statements attempted + Rollback statements

attempted

Let SortsPerTX= Total sorts / transactions

Let PercentSortOverflows = Sort overflows * 100 / Total sorts

如果PercentSortOverflows 超過3%,可能說明應用中有比較嚴重的sort SQL。因為大量的overflows說明有大量的sort出現,為零或者小于1時比較理想的。

如果有大量的overflow出現,權宜之計是增加SORTHEAP,但是這么做只是隱藏了問題。根本解決是:要定位SQL,通過調整SQL,INDEX,clustering 來減少sort 代價。

如果SortsPerTX 大于5,說明每個交易的sort數目過多,某些應用可能執行了大量的小復合查詢,不會overflow,但是有很小的時間段。但是會消耗大量的CPU。同樣是要調整SQL,INDEX,clustering來解決問題。

6. Temporary Tablespaces

臨時表空間一般要有3個containers在不同的disk上,可以實現并行I/O,提高sorts, hash joins,或者其他在TEMPSPACE上的動作的性能。

db2 "list tablespaces show detail",可查看臨時表空間的container:

Tablespace ID= 1

Name= TEMPSPACE1

Type= System managed space

Contents= Temporary data

State= 0x0000

Detailed explanation: Normal

Total pages= 1

Useable pages= 1

Used pages= 1

Free pages= Not applicable

High water mark (pages)= Not applicable

Page size (bytes)= 4096

Extent size (pages)= 32

Prefetch size (pages)= 96

Number of containers= 3

這里表示有3個container,Prefetch size是Extent size的3倍。為了最好的并行性能,最好Prefetch size是Extent size的倍數。一般倍數是container的數目。

db2 "list tablespace containers for 1 show detail"

可以看到containers的定義。

7. Locks

缺省的LOCKTIMEOUT=-1,就是說不設置lock的timeout,在OLTP中這可能是一個災難。我們要設置比較小的數值,比如設置LOCKTIMEOUT=10或者15秒。

查看命令:

db2 "get db cfg for DBNAME",

繼續查看下面的信息:

Lock timeout (sec) (LOCKTIMEOUT) = -1

要和應用人員將明白,他們是否已經在程序中可以處理timeout的情況。然后設置:

db2 "update db cfg for DBNAME using LOCKTIMEOUT 15"

可以在系統中察看lock wait的數目,lock wait time, lock list 使用的內存量。

db2 "get snapshot for database on DBNAME"

查看:

Locks held currently= 0

Lock waits= 0

Time database waited on locks (ms)= 0

Lock list memory in use (Bytes)= 576

Deadlocks detected= 0

Lock escalations= 0

Exclusive lock escalations= 0

Agents currently waiting on locks= 0

Lock Timeouts= 0

假如lock list的內存量(bytes)超過LOCKLIST 的50%,那么需要增加LOCKLIST的量,LOCKLIST是按4k計算。

8. Maximum Open Files

最大的打開文件數目

DB2限制同時打開的文件數目,數據庫參數"MAXFILOP"限定了并發打開的文件數目。如達到這個數目,DB2就會開始關閉和打開Tablespace文件,包括raw device,這樣會降低SQL反映時間和占用CPU。

使用命令來查看是否有文件關閉情況:

db2 "get snapshot for database on DBNAME"

看看其中的 "Database files closed = 0"

如果值不是零,就需要修改MAXFILOP,

db2 "update db cfg for DBNAME using MAXFILOP N"

9. Agents

需要保證有足夠的agent應付系統負載。

命令:db2 "get snapshot for database manager"

此時需要觀察“Agents waiting for a token” 或者“ Agents stolen from another application”,假如有值,就需要增加DB manager的agent值,也就是修改MAXAGENTS 和/或者 MAX_COORDAGENTS的值。

High water mark for agents registered = 7

High water mark for agents waiting for a token = 0

Agents registered= 7

Agents waiting for a token= 0

Idle agents= 5

Agents assigned from pool= 158

Agents created from empty Pool = 7

Agents stolen from another application= 0

High water mark for coordinating agents= 7

Max agents overflow= 0

10. Monitor Switches

打開Monitor Switch后才可以獲得性能方面的信息,詳細命令如下:

db2 "update monitor switches using lock ON sort ON bufferpool ON uow ON table ON statement ON"


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美中文在线观看| 福利一区视频在线观看| 日韩一区二区久久久| 日韩久久精品成人| 亚洲人免费视频| 97色在线播放视频| 中文字幕亚洲图片| 亚洲国语精品自产拍在线观看| 国产成人激情视频| 国产精品视频免费观看www| 亚洲电影免费观看高清完整版在线观看| 日韩免费在线观看视频| 91高清免费在线观看| 亚洲女成人图区| 亚洲精品一区二区在线| 91色视频在线导航| 九九热99久久久国产盗摄| 国产精品91久久久| 日韩一区av在线| 亚洲国产欧美久久| 欧美黑人狂野猛交老妇| 国产成人亚洲综合91| 亚洲欧美色图片| 精品爽片免费看久久| 国产91在线播放九色快色| 国内成人精品视频| 91久久精品日日躁夜夜躁国产| 亚洲天堂第二页| 亚洲精品久久7777777| 国产精品成久久久久三级| 日韩av大片在线| 国产综合香蕉五月婷在线| 亚洲理论在线a中文字幕| 精品久久久久久亚洲精品| 亚洲欧美制服中文字幕| 久久精品欧美视频| 亚洲欧美国产高清va在线播| 色伦专区97中文字幕| 日韩美女写真福利在线观看| 亚洲欧美一区二区激情| 午夜精品福利电影| 热门国产精品亚洲第一区在线| 亚洲欧美成人精品| 美女少妇精品视频| 国产一区二区三区四区福利| 亚洲欧洲在线看| 狠狠久久五月精品中文字幕| 久久亚洲电影天堂| 亚洲欧美一区二区精品久久久| 国产精品久久久久久久一区探花| 国产成人鲁鲁免费视频a| 亚洲va电影大全| 米奇精品一区二区三区在线观看| 国产精品视频公开费视频| 成人性生交大片免费观看嘿嘿视频| 国产精品wwwwww| 亚洲天堂开心观看| 黄色成人av在线| 久久久免费高清电视剧观看| 97人人爽人人喊人人模波多| 91视频国产精品| 日本aⅴ大伊香蕉精品视频| 日本亚洲欧美成人| 日韩中文在线中文网在线观看| 草民午夜欧美限制a级福利片| 久久香蕉精品香蕉| 亚洲欧美另类中文字幕| 亚洲第一区中文99精品| 亚洲精品国产综合久久| 日韩av网址在线| 成人免费黄色网| 热99久久精品| 国产精品高潮呻吟久久av无限| 亚洲永久免费观看| 自拍偷拍亚洲区| 亚洲一级一级97网| 日本人成精品视频在线| 亚洲经典中文字幕| 欧美日韩国产中文精品字幕自在自线| 97视频色精品| 亚洲伊人第一页| 久久精品国产一区二区三区| 狠狠色噜噜狠狠狠狠97| 欧美日本高清一区| 国产精品视频一区二区三区四| 亚洲激情在线视频| 九九热最新视频//这里只有精品| 亚洲国产91精品在线观看| 亚洲一区二区在线| 亚洲精品国产精品乱码不99按摩| 夜夜躁日日躁狠狠久久88av| 91网站在线看| 亚洲欧美日韩在线一区| 日韩欧美主播在线| 欧美专区日韩视频| 亚洲人a成www在线影院| 亚洲成人网在线| 久操成人在线视频| 欧美日韩国产在线播放| 久久噜噜噜精品国产亚洲综合| 国产97色在线|日韩| 在线播放国产一区二区三区| 日韩精品在线观看一区| 精品中文字幕久久久久久| xxxxx成人.com| 中文字幕久精品免费视频| 欧美中文在线免费| 性亚洲最疯狂xxxx高清| 亚洲人成网站777色婷婷| 国产主播喷水一区二区| 日本乱人伦a精品| 欧美精品videofree1080p| 欧美理论片在线观看| 亚洲欧洲免费视频| 91麻豆国产语对白在线观看| 国产精品高潮呻吟久久av无限| 国产精品第一区| 国产精品av免费在线观看| 欧美日韩成人在线播放| 欧美成人高清视频| 91av视频在线观看| 欧美大秀在线观看| 岛国av一区二区三区| 久久精品中文字幕电影| 亚洲国产精彩中文乱码av| 欧美激情视频网| 91久久综合亚洲鲁鲁五月天| 亚洲精品国产综合区久久久久久久| 亚洲国产精品一区二区久| 欧美国产极速在线| 国产欧美日韩综合精品| 久久亚洲欧美日韩精品专区| 97视频人免费观看| 日韩av电影手机在线观看| 色悠久久久久综合先锋影音下载| 精品无码久久久久久国产| 午夜精品一区二区三区视频免费看| 亚洲欧美日韩中文在线制服| 91精品综合久久久久久五月天| 热久久免费视频精品| 久久亚洲精品国产亚洲老地址| 久久精品视频99| 国产成人精彩在线视频九色| 亚洲欧美福利视频| 欧美国产日韩在线| 精品福利在线视频| 日韩精品视频免费专区在线播放| 国产日韩精品在线| 91久久精品国产| 成人中文字幕+乱码+中文字幕| 亚洲欧美激情在线视频| 精品女厕一区二区三区| 欧美福利视频在线观看| 97在线免费观看视频| 久久久久久久成人| 麻豆一区二区在线观看| 久久久综合av| 国产精品成人在线| 亚洲成色777777在线观看影院| 一区二区中文字幕| 98午夜经典影视| 欧美精品电影免费在线观看| 国产成人aa精品一区在线播放| 国产亚洲免费的视频看|