按照事務(wù)類型分析DB2事物的性能
事務(wù)是數(shù)據(jù)庫系統(tǒng)中的核心概念之一。應(yīng)用程序可以通過啟動、提交、回滾等操作來控制一個事務(wù)的執(zhí)行與停止。從應(yīng)用的角度來看,一個事務(wù)往往對應(yīng)一系列緊密關(guān)聯(lián)的用戶操作,因此事務(wù)的性能是影響用戶體驗的重要因素之一。本文提出了一種方法,利用 DB2 的事件監(jiān)測器和快照監(jiān)測器,來分析運行于 DB2 系統(tǒng)的事務(wù)的性能。在分析報告中,提供了事務(wù)的平均執(zhí)行時間,執(zhí)行次數(shù),事務(wù)中每一個 SQL 語句的執(zhí)行時間以及執(zhí)行 SQL 語句時應(yīng)用程序的狀態(tài)。根據(jù)事務(wù)的性能分析報告,數(shù)據(jù)庫管理員和開發(fā)者可以更好的進(jìn)行性能調(diào)優(yōu)。
概述
事務(wù)是數(shù)據(jù)庫系統(tǒng)中的核心概念之一。作為數(shù)據(jù)庫系統(tǒng)的邏輯工作單元(Unit of Work),事務(wù)必須具有四個屬性,即原子性、一致性、隔離性和持久性(ACID)。數(shù)據(jù)庫系統(tǒng)往往通過鎖機(jī)制保證事務(wù)的隔離性,通過日志機(jī)制保證事務(wù)的持久性。應(yīng)用程序可以通過啟動、提交、回滾等操作來控制一個事務(wù)的執(zhí)行與停止。從應(yīng)用的角度來看,一個事務(wù)往往對應(yīng)一系列緊密關(guān)聯(lián)的用戶操作,例如銀行系統(tǒng)中的存款、轉(zhuǎn)賬等。對于用戶而言,提交一個事務(wù)相當(dāng)于完成某種交易行為,因此執(zhí)行一個事務(wù)前后跨越的時間是影響用戶體驗的因素之一。
數(shù)據(jù)庫系統(tǒng)的性能是評判數(shù)據(jù)庫系統(tǒng)的重要因素之一,DB2 作為一款成功的數(shù)據(jù)庫產(chǎn)品提供了很多性能調(diào)優(yōu)的特征與功能。一方面 DB2 在數(shù)據(jù)庫管理器層和數(shù)據(jù)庫層提供了大量的可配置參數(shù),通過 db2 get/update dbm cfg和db2 get/update db cfg 可以查看和修改這些參數(shù),并且可以通過控制中心(Control Center, db2cc)中的 Configuration Advisor 來獲得優(yōu)化的配置參數(shù)值。另一方面DB2提供了針對查詢的優(yōu)化功能,例如 SQL Explain Facility 可以分析一個 SQL 語句優(yōu)化后的訪問計劃(Access Plan),命令行編輯器(Command Editor)中也提供了訪問計劃的圖形化視圖。但是如果想監(jiān)測和分析一個事務(wù)的性能,例如事務(wù)的執(zhí)行時間,事務(wù)中每一個 SQL 語句的執(zhí)行時間,事務(wù)中的空閑時間等,則無法簡單的通過現(xiàn)有工具來實現(xiàn)。本文將介紹一種分析 DB2 的事務(wù)性能的方法,從而幫助數(shù)據(jù)庫設(shè)計者和管理員調(diào)優(yōu)數(shù)據(jù)庫性能。
事務(wù)的邏輯組成
一個事務(wù)在邏輯上可以由一組 SQL 語句和一個提交/回滾操作組成。在 DB2 中,事務(wù)由第一個向數(shù)據(jù)庫發(fā)出的 SQL 語句隱式啟動,而不需要發(fā)出啟動事務(wù)的命令。所有后續(xù)的來自同一個應(yīng)用程序的數(shù)據(jù)庫讀寫操作都被歸入用一個事務(wù),直到該應(yīng)用程序發(fā)出 COMMIT(提交)或者 ROLLBACK(回滾)語句。ROLLBACK 語句會把這個事務(wù)造成的對數(shù)據(jù)庫的所有修改都取消掉。如果應(yīng)用程序沒有發(fā)出 COMMIT 或 ROLLBACK 就正常退出了,這個事務(wù)將自動提交。如果在事物的執(zhí)行途中應(yīng)用程序不正常退出,則將自動回滾。一旦發(fā)出了 COMMIT/ROLLBACK 命令,這個命令就無法停止了。由于事務(wù)只是由一串 SQL 語句組成的,所以不存在事務(wù)的物理表示。
在執(zhí)行一個事務(wù)的過程中,數(shù)據(jù)庫和應(yīng)用程序可能處于不同的狀態(tài)。例如在圖 1所示的事務(wù)中,應(yīng)用程序順序執(zhí)行了 3 個 SQL 語句并執(zhí)行了 COMMIT 語句。在 t0 到 t1 時間內(nèi)應(yīng)用程序處于 UOW Executing 狀態(tài)或者 Lock wait,其中 UOW Executing 狀態(tài)是指應(yīng)用程序在執(zhí)行數(shù)據(jù)庫操作, Lock wait 狀態(tài)是指應(yīng)用程序在等待對數(shù)據(jù)庫對象的鎖;在 t1 到 t2 時間內(nèi)處于 UOW Waiting, UOW Waiting 是指應(yīng)用程序當(dāng)前沒有進(jìn)行數(shù)據(jù)庫操作。一個事務(wù)的執(zhí)行過程消耗的時間可能用于執(zhí)行 SQL 語句、執(zhí)行應(yīng)用程序代碼或等待鎖,如果某一類事務(wù)的性能比較差,需要分辨是在哪一個方面消耗的時間,從而做出調(diào)整。
本文是從事務(wù)類型來分析DB2事物的性能,是對DB2數(shù)據(jù)庫的更深一層的解析,希望上文中涉及到的內(nèi)容對大家能夠有所幫助。
【編輯推薦】
- 令我難忘的DB2數(shù)據(jù)庫之路
- DB2復(fù)雜的應(yīng)用環(huán)境中的性能優(yōu)化
- DB2并發(fā)連接時的性能考慮
- DB2實用程序的性能優(yōu)化
- 一個筆記告訴你,從Java存儲轉(zhuǎn)到SQL存儲的過程
【責(zé)任編輯:
迎迎TEL:(010)68476606】