日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
按照事務(wù)類(lèi)型分析 DB2 事物的性能

概述事務(wù)是數(shù)據(jù)庫(kù)系統(tǒng)中的核心概念之一。作為數(shù)據(jù)庫(kù)系統(tǒng)的邏輯工作單元(Unit of Work),事務(wù)必須具有四個(gè)屬性,即原子性、一致性、隔離性和持久性(ACID)。數(shù)據(jù)庫(kù)系統(tǒng)往往通過(guò)鎖機(jī)制保證事務(wù)的隔離性,通過(guò)日志機(jī)制保證事務(wù)的持久性。應(yīng)用程序可以通過(guò)啟動(dòng)、提交、回滾等操作來(lái)控制一個(gè)事務(wù)的執(zhí)行與停止。從應(yīng)用的角度來(lái)看,一個(gè)事務(wù)往往對(duì)應(yīng)一系列緊密關(guān)聯(lián)的用戶(hù)操作,例如銀行系統(tǒng)中的存款、轉(zhuǎn)賬等。對(duì)于用戶(hù)而言,提交一個(gè)事務(wù)相當(dāng)于完成某種交易行為,因此執(zhí)行一個(gè)事務(wù)前后跨越的時(shí)間是影響用戶(hù)體驗(yàn)的因素之一。

十載的江州網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整江州建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“江州網(wǎng)站設(shè)計(jì)”,“江州網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

數(shù)據(jù)庫(kù)系統(tǒng)的性能是評(píng)判數(shù)據(jù)庫(kù)系統(tǒng)的重要因素之一,DB2作為一款成功的數(shù)據(jù)庫(kù)產(chǎn)品提供了很多性能調(diào)優(yōu)的特征與功能。一方面 DB2 在數(shù)據(jù)庫(kù)管理器層和數(shù)據(jù)庫(kù)層提供了大量的可配置參數(shù),通過(guò) db2 get/update dbm cfg和db2 get/update db cfg 可以查看和修改這些參數(shù),并且可以通過(guò)控制中心(Control Center, db2cc)中的 Configuration Advisor 來(lái)獲得優(yōu)化的配置參數(shù)值。另一方面DB2提供了針對(duì)查詢(xún)的優(yōu)化功能,例如 SQL Explain Facility 可以分析一個(gè) SQL 語(yǔ)句優(yōu)化后的訪問(wèn)計(jì)劃(Access Plan),命令行編輯器(Command Editor)中也提供了訪問(wèn)計(jì)劃的圖形化視圖。但是如果想監(jiān)測(cè)和分析一個(gè)事務(wù)的性能,例如事務(wù)的執(zhí)行時(shí)間,事務(wù)中每一個(gè) SQL 語(yǔ)句的執(zhí)行時(shí)間,事務(wù)中的空閑時(shí)間等,則無(wú)法簡(jiǎn)單的通過(guò)現(xiàn)有工具來(lái)實(shí)現(xiàn)。本文將介紹一種分析 DB2 的事務(wù)性能的方法,從而幫助數(shù)據(jù)庫(kù)設(shè)計(jì)者和管理員調(diào)優(yōu)數(shù)據(jù)庫(kù)性能。

事務(wù)的邏輯組成

一個(gè)事務(wù)在邏輯上可以由一組 SQL 語(yǔ)句和一個(gè)提交/回滾操作組成。在 DB2 中,事務(wù)由第一個(gè)向數(shù)據(jù)庫(kù)發(fā)出的 SQL 語(yǔ)句隱式啟動(dòng),而不需要發(fā)出啟動(dòng)事務(wù)的命令。所有后續(xù)的來(lái)自同一個(gè)應(yīng)用程序的數(shù)據(jù)庫(kù)讀寫(xiě)操作都被歸入用一個(gè)事務(wù),直到該應(yīng)用程序發(fā)出 COMMIT(提交)或者 ROLLBACK(回滾)語(yǔ)句。ROLLBACK 語(yǔ)句會(huì)把這個(gè)事務(wù)造成的對(duì)數(shù)據(jù)庫(kù)的所有修改都取消掉。如果應(yīng)用程序沒(méi)有發(fā)出 COMMIT 或 ROLLBACK 就正常退出了,這個(gè)事務(wù)將自動(dòng)提交。如果在事物的執(zhí)行途中應(yīng)用程序不正常退出,則將自動(dòng)回滾。一旦發(fā)出了 COMMIT/ROLLBACK 命令,這個(gè)命令就無(wú)法停止了。由于事務(wù)只是由一串 SQL 語(yǔ)句組成的,所以不存在事務(wù)的物理表示。

在執(zhí)行一個(gè)事務(wù)的過(guò)程中,數(shù)據(jù)庫(kù)和應(yīng)用程序可能處于不同的狀態(tài)。例如在圖 1所示的事務(wù)中,應(yīng)用程序順序執(zhí)行了 3 個(gè) SQL 語(yǔ)句并執(zhí)行了 COMMIT 語(yǔ)句。在 t0 到 t1 時(shí)間內(nèi)應(yīng)用程序處于 UOW Executing 狀態(tài)或者 Lock wait,其中 UOW Executing 狀態(tài)是指應(yīng)用程序在執(zhí)行數(shù)據(jù)庫(kù)操作, Lock wait 狀態(tài)是指應(yīng)用程序在等待對(duì)數(shù)據(jù)庫(kù)對(duì)象的鎖;在 t1 到 t2 時(shí)間內(nèi)處于 UOW Waiting, UOW Waiting 是指應(yīng)用程序當(dāng)前沒(méi)有進(jìn)行數(shù)據(jù)庫(kù)操作。一個(gè)事務(wù)的執(zhí)行過(guò)程消耗的時(shí)間可能用于執(zhí)行 SQL 語(yǔ)句、執(zhí)行應(yīng)用程序代碼或等待鎖,如果某一類(lèi)事務(wù)的性能比較差,需要分辨是在哪一個(gè)方面消耗的時(shí)間,從而做出調(diào)整。

圖 1. 事務(wù)的邏輯組成

分析事務(wù)的性能

由于事務(wù)在數(shù)據(jù)庫(kù)中沒(méi)有一個(gè)物理的表示,因此無(wú)法直接獲得一個(gè)事務(wù)的監(jiān)控信息。本文將介紹一種方法通過(guò) DB2 的事件監(jiān)控器捕獲的事件和快照得到的信息來(lái)綜合分析事務(wù)的性能。圖 2為這種方法的流程。

圖 2. 分析事物性能的方法流程圖

下面將按照流程圖中的步驟通過(guò)一個(gè)實(shí)驗(yàn)詳細(xì)介紹分析事物性能的方法。實(shí)驗(yàn)環(huán)境為 DB2 V9.1,操作系統(tǒng)為 Windows XP。實(shí)驗(yàn)中通過(guò)壓力測(cè)試工具訪問(wèn)一個(gè)部署在 WebSphere Application Server 上的 J2EE 應(yīng)用 Trade6 [4] 來(lái)執(zhí)行一系列的數(shù)據(jù)庫(kù)操作,同時(shí)捕獲數(shù)據(jù)庫(kù)的性能數(shù)據(jù),隨后分析得出數(shù)據(jù)庫(kù)系統(tǒng)的事務(wù)性能。

圖 3. 實(shí)驗(yàn)環(huán)境

#p#

用 DB2 事件監(jiān)測(cè)器(Event Monitor)來(lái)捕獲數(shù)據(jù)庫(kù)語(yǔ)句事件

首先需要打開(kāi) DB2 的事件監(jiān)控器來(lái)捕獲數(shù)據(jù)庫(kù)中執(zhí)行的 SQL 語(yǔ)句和事務(wù)語(yǔ)句。在 DB2 V8 中,提供了兩種監(jiān)測(cè)器來(lái)讓用戶(hù)得到系統(tǒng)監(jiān)測(cè)信息,即事件監(jiān)測(cè)器(Event Monitor)和快照監(jiān)測(cè)器(Snapshot Monitor)[1]。這兩種監(jiān)測(cè)器在 DB2 V9 中得到了保留 [2]。這兩種監(jiān)測(cè)器可以用來(lái)捕獲不同類(lèi)型的數(shù)據(jù)庫(kù)系統(tǒng)信息,在本方法中將利用它們來(lái)獲得 SQL 語(yǔ)句、事務(wù)語(yǔ)句的執(zhí)行信息和應(yīng)用程序的狀態(tài)信息。由于這些監(jiān)測(cè)器本身會(huì)帶來(lái)一些系統(tǒng)開(kāi)銷(xiāo),例如在進(jìn)入和完成 SQL 語(yǔ)句的時(shí)候需要加入系統(tǒng)調(diào)用,并且需要分配更多的內(nèi)存來(lái)保存監(jiān)測(cè)數(shù)據(jù),因此一般情況下這些監(jiān)測(cè)器是禁用的。在啟動(dòng)應(yīng)用程序之前,需要運(yùn)行如下命令創(chuàng)建并打開(kāi)針對(duì) SQL 語(yǔ)句和事務(wù)語(yǔ)句的事件監(jiān)測(cè)器:

mkdir C:\db2\eventmon

db2 "create event monitor SMEVM for statements write to file ' C:\db2\eventmon '"

db2 "set event monitor SMEVM state=1"

其中第一步需要新建一個(gè)目錄,本例中給出在 Windows 系統(tǒng)下的命令,生成的目錄需要給數(shù)據(jù)庫(kù)管理員賬號(hào)讀寫(xiě)權(quán)限。第二步用 db2 命令行工具[3]創(chuàng)建一個(gè)事件監(jiān)控器,監(jiān)控語(yǔ)句事件。在 DB2 中有很多種事件可以被監(jiān)控,應(yīng)根據(jù)需要選擇被監(jiān)控的事件類(lèi)型,由于監(jiān)控本身有比較大的性能開(kāi)銷(xiāo),盡量不要選擇無(wú)關(guān)事件。在這一步中 write to file 子句后面的參數(shù)必須是一個(gè)存在的并且可寫(xiě)的目錄,否則在第三步打開(kāi)監(jiān)測(cè)器的時(shí)候會(huì)出現(xiàn)錯(cuò)誤。第三步即通過(guò) db2 命令行工具打開(kāi)事件監(jiān)測(cè)器。在實(shí)驗(yàn)結(jié)束后需要將事件導(dǎo)出成文本形式,以供后面繼續(xù)分析:

db2evmon -db tradedb -evm SMEVM > C:\db2\eventmon.txt

db2 "set event monitor SMEVM state=0"

最后一步用于關(guān)閉事件監(jiān)測(cè)器。下面是一個(gè)導(dǎo)出的文本文件的例子,部分無(wú)關(guān)信息被省略。

清單 1. 語(yǔ)句事件文件

--------------------------------------------------------------------------
EVENT LOG HEADER
Event Monitor name: SMEVM

Server instance name: db2inst1
--------------------------------------------------------------------------

--------------------------------------------------------------------------
Database Name: TRADEDB

--------------------------------------------------------------------------

4) Statement Event ...
Appl Handle: 7
Appl Id: *LOCAL.db2inst1.070109081142
Appl Seq number: 00078

Record is the result of a flush: FALSE
-------------------------------------------
Operation: Static Commit
Package :
Consistency Token :
Package Version ID :
Cursor :
Cursor was blocking: FALSE
-------------------------------------------
Start Time: 01/09/2007 01:19:48.601550
Stop Time: 01/09/2007 01:19:48.601574
Exec Time: 0.000024 seconds
Number of Agents created: 1
User CPU: 0.000000 seconds
System CPU: 0.000000 seconds
Fetch Count: 0
Sorts: 0
Total sort time: 0
Sort overflows: 0
Rows read: 0
Rows written: 0
Internal rows deleted: 0
Internal rows updated: 0
Internal rows inserted: 0
Bufferpool data logical reads: 0
Bufferpool data physical reads: 0
Bufferpool temporary data logical reads: 0
Bufferpool temporary data physical reads: 0
Bufferpool index logical reads: 0
Bufferpool index physical reads: 0
Bufferpool temporary index logical reads: 0
Bufferpool temporary index physical reads: 0
Bufferpool xda logical page reads: 0
Bufferpool xda physical page reads: 0
Bufferpool temporary xda logical page reads: 0
Bufferpool temporary xda physical page reads: 0
SQLCA:
sqlcode: 0
sqlstate: 00000

48) Statement Event ...
Appl Handle: 138
Appl Id: 127.0.0.1.8096.070109091708
Appl Seq number: 00024

Record is the result of a flush: FALSE
-------------------------------------------
Type : Dynamic
Operation: Open
Section : 16
Creator : NULLID
Package : SYSSN200
Consistency Token : SYSLVL01
Package Version ID :
Cursor : SQL_CURSN200C16
Cursor was blocking: FALSE
Text : select * from quoteejb q where q.symbol=? For Update
-------------------------------------------
Start Time: 01/09/2007 01:23:05.894949
Stop Time: 01/09/2007 01:23:05.894970

SQLCA:
sqlcode: 0
sqlstate: 00000

可以看出,該文件由一組事件記錄組成,每一條記錄有一個(gè)唯一的編號(hào)和一組屬性,如應(yīng)用程序句柄,操作類(lèi)型,開(kāi)始時(shí)間,結(jié)束時(shí)間等。主要內(nèi)容如表 1所示。

表 1. 事件記錄屬性列表
屬性名稱(chēng) 意義 值/范圍 備注
Appl Handle 應(yīng)用程序句柄 整形
Appl Id 應(yīng)用程序ID 字符串
Appl Seq number 應(yīng)用程序序號(hào) 整形 每當(dāng)工作單元結(jié)束(即 COMMIT 或 ROLLBACK 終止工作單元)時(shí),此標(biāo)識(shí)就會(huì)遞增。appl_id 與 sequence_no 一起唯一地標(biāo)識(shí)一個(gè)事務(wù)。
Operation 操作類(lèi)型 Static Commit Rollback Open Close Prepare Describe Execute Static Commit 和 Rollback 是事務(wù)語(yǔ)句的事件。一個(gè) Select 語(yǔ)句一般會(huì)對(duì)應(yīng) Prepare, Describe, Open, Close 四個(gè)事件。如果是已經(jīng)執(zhí)行過(guò)的Select語(yǔ)句,可能只有Open和Close事件。一個(gè) Update/Delete/Insert 語(yǔ)句一般對(duì)應(yīng) Prepare, Describe, Execute 三個(gè)事件。
Start Time 操作開(kāi)始時(shí)間 時(shí)間戳
Stop Time 操作結(jié)束時(shí)間 時(shí)間戳
Text SQL語(yǔ)句內(nèi)容 字符串 動(dòng)態(tài)SQL語(yǔ)句的參數(shù)會(huì)被?代替

#p#

用 DB2 快照(Snapshot)獲得應(yīng)用程序的狀態(tài)

如前所述,在應(yīng)用程序執(zhí)行的過(guò)程中可能處于不同的狀態(tài),因此需要同時(shí)打開(kāi)DB2快照監(jiān)測(cè)器捕獲應(yīng)用程序狀態(tài)信息。打開(kāi)DB2快照的命令如下:

db2 update dbm cfg using DFT_MON_SORT ON

db2 update dbm cfg using DFT_MON_LOCK ON

db2 update dbm cfg using DFT_MON_TABLE ON

db2 update dbm cfg using DFT_MON_STMT ON

db2 update dbm cfg using DFT_MON_UOW ON

db2 update dbm cfg using DFT_MON_TIMESTAMP ON

這些快照監(jiān)測(cè)器默認(rèn)設(shè)置是關(guān)閉的,可以通過(guò)如下命令查看其狀態(tài):db2 get dbm cfg。在實(shí)驗(yàn)結(jié)束后,如需要關(guān)閉快照監(jiān)測(cè)器,可使用 db2 update 命令關(guān)閉,將打開(kāi)命令中的 ON 改為 OFF 即可。

與事件監(jiān)測(cè)器不同,快照監(jiān)測(cè)器不是自動(dòng)捕獲信息的,而是需要通過(guò)用戶(hù)發(fā)出快照命令才執(zhí)行。因此在實(shí)驗(yàn)過(guò)程中,需要不斷的發(fā)出針對(duì)應(yīng)用程序的快照命令,并將結(jié)果保存到文件中。執(zhí)行快照的命令如下:

db2 get snapshot for applications on TRADEDB >> application.snapshot.txt

其中TRADEDB為數(shù)據(jù)庫(kù)名稱(chēng)。下面是一個(gè)應(yīng)用程序的快照結(jié)果,部分無(wú)關(guān)信息被省略。

清單 2. 快照監(jiān)測(cè)器輸出結(jié)果

Application Snapshot

Application handle = 26
Application status = UOW Waiting
Status change time = 01/09/2007 00:28:08.472486
Application code page = 1208
Application country/region code = 0
DUOW correlation token = N00A1405.O0B0.070412045634
Application name = db2jcc_application
Application ID = N00A1405.O0B0.070412045634

Connection request start timestamp = 01/08/2007 23:56:31.937719
Connect request completion timestamp = 01/08/2007 23:56:31.938028
Application idle time = 10 minutes 9 seconds
CONNECT Authorization ID = DB2INST1

Last reset timestamp =
Snapshot timestamp = 01/09/2007 00:38:17.953083

按照事務(wù)類(lèi)型分析 DB2 事物的性能,從上文可以看出是個(gè)比較復(fù)雜的過(guò)程,大家在分析時(shí)一定要注意一些小細(xì)節(jié),個(gè)個(gè)環(huán)節(jié)都要考慮周全,只有這樣才能做到萬(wàn)無(wú)一失,完善了工作。

【編輯推薦】

  1. DB2數(shù)據(jù)庫(kù)性能監(jiān)控的具體步驟
  2. 講解IBM DB2數(shù)據(jù)庫(kù)的常用日期操作函數(shù)
  3. DB2 跨平臺(tái)數(shù)據(jù)庫(kù)遷移步驟和注意事項(xiàng)
  4. DB2數(shù)據(jù)庫(kù)優(yōu)化超有用的幾條基本策略

網(wǎng)頁(yè)題目:按照事務(wù)類(lèi)型分析 DB2 事物的性能
文章起源:http://m.5511xx.com/article/djeggsi.html