IBM DB2事件監(jiān)視器的概念與應(yīng)用
以下的文章主要向大家講述的是IBM DB2事件監(jiān)視器與explain plan的具體使用方案的描述,假如你在實(shí)際操作中遇到相似的情況,但是你卻不知道對(duì)其如何正確的解決,那么以下的文章對(duì)你而言一定是良師益友。
1. db2 create event monitor statev for tables,statements,transactions,deadlocks write to file '/home/db2inst1/event' maxfiles 10 maxfilesize 5
關(guān)于如何創(chuàng)建IBM DB2事件監(jiān)視器的方法,請(qǐng)參看如下步驟:
***種方法:
1. db2 create event monitor statev for tables,statements,transactions,deadlocks write to file '/home/db2inst1/event' maxfiles 10 maxfilesize 5
or
CREATE EVENT MONITOR statev FOR STATEMENTS WRITE TO TABLE STMT(TABLE em.stmtTab)
includes(rows_read,rows_written_stmt_text)
注:文件大小為5*4k,總大小為5*4k*10.大小要足夠大,否則新的監(jiān)控信息無(wú)法寫(xiě)入監(jiān)視器
2. db2 set event monitor statev state 1
3. Run the SQL statements 如:insert into test09 values('1','2',default)
4. db2 flush event monitor statev
5. db2evmon gzdb statev > output.txt
6. db2 set event monitor statev state 0
第二種方法:
1. 創(chuàng)建一個(gè) SQL Event Monitor,寫(xiě)入文件:
db2 create event monitor evmname for eventtype write to file 'directory'
例:db2 create event monitor mymonitor for deadlocks,statements write to file '/db2db/event'
2. 激活I(lǐng)BM DB2事件監(jiān)視器(確保有充足的可用磁盤(pán)空間):
$> db2 "set event monitor SQLCOST state = 1"
3. 讓?xiě)?yīng)用程序運(yùn)行。
4. 取消激活事件監(jiān)視器:
$> db2 "set event monitor SQLCOST state = 0"
5. 使用 DB2 提供的 db2evmon 工具來(lái)格式化 SQL Event Monitor 原始數(shù)據(jù)(根據(jù) SQL 吞吐率可能需要數(shù)百兆字節(jié)的可用磁盤(pán)空間):
$> db2evmon -db DBNAME -evm SQLCOST > sqltrace.txt
6. 瀏覽整個(gè)已格式化的文件,尋找顯著大的成本數(shù)(一個(gè)耗時(shí)的過(guò)程):
$> more sqltrace.txt
#利用EXPLAIN分析SQL
--------------------------------------------------------------------------------------------------
SQL 的 Explain 通過(guò)圖形化或基于文本的方式詳細(xì)說(shuō)明了 SQL 語(yǔ)句的每個(gè)部分是如何執(zhí)行以及何時(shí)執(zhí)行的。這包括以下一些基本信息:
正被訪問(wèn)的表
正被使用的索引
何時(shí)連接數(shù)據(jù)
何時(shí)排序數(shù)據(jù)
Explain 還捕獲更復(fù)雜的信息,在細(xì)究 SQL 正在發(fā)生什么時(shí),該信息非常有用:
表和索引基數(shù)
正連接的表和索引的順序
結(jié)果集的基數(shù)
在查詢(xún)的每部分正在選擇哪些字段
排序方法
SQL 每部分的時(shí)間范圍
要理解 Explain 信息,您需要掌握的最重要概念是 timeron。timeron 是 DB2 優(yōu)化器使
用的計(jì)量單位,用來(lái)計(jì)量完成查詢(xún)的時(shí)間和資源數(shù)量。timeron 綜合了時(shí)間、CPU 利用率、
I/O 和其它因素。由于這些參數(shù)值是變化的,因此執(zhí)行某個(gè)查詢(xún)所需的 timeron 數(shù)量是動(dòng)態(tài)
的,每次執(zhí)行該查詢(xún)所需的 timeron 都不同。
#使用控制中心的EXPLAIN SQL
觀察SQL的存取方案,分析優(yōu)化參數(shù),考慮優(yōu)化的級(jí)別。
#使用字符工具
db2 set current explain mode [no|yes|explain]
db2exfmt
可以從命令行調(diào)用 db2expln 工具,以獲得查詢(xún)的存取方案。但是,該工具不返回優(yōu)化器信息。
db2expln -database gzdb -statement "select * from syscat.tables" -termina。l以上的相關(guān)內(nèi)容就是對(duì)IBM DB2事件監(jiān)視器及explain plan的使用的介紹,望你能有所收獲。
【編輯推薦】
- DB2客戶(hù)端開(kāi)發(fā)的***動(dòng)向描述
- DB2 9 Viper 2續(xù)寫(xiě)不老傳奇
- IBM DB2 9只毒蛇這樣“毒”的原因是什么
- DB2 9 分布式管理之維護(hù)的描述
- IBM DB2中提高并發(fā)度的3個(gè)好用方案介紹