DB2 V9.5工作負(fù)載管理之閾值(THRESHOLD)
閾值( THRESHOLD )
可以通過創(chuàng)建閾值的方式對(duì)服務(wù)類所使用的資源進(jìn)行控制,閾值可以根據(jù)不同的類型進(jìn)行創(chuàng)建。閾值提供一種方法,用來控制每種工作能夠使用的資源數(shù)量。在工作負(fù)載管理( WLM )解決方案中,你可以使用閾值來防止系統(tǒng)過載或者資源被濫用現(xiàn)象的發(fā)生。通過閾值,你可以直接對(duì)特定的資源設(shè)置限定,當(dāng)超過限定時(shí),就會(huì)觸發(fā)特定的動(dòng)作。
支持的動(dòng)作有:
STOP EXECUTION:停止違反閾值的相關(guān)動(dòng)作
CONTINUE:繼續(xù)執(zhí)行
收集違反閾值的相關(guān)動(dòng)作信息
不管違反閾值的特定動(dòng)作被停止還是繼續(xù)執(zhí)行,你都可以收集該動(dòng)作的詳細(xì)信息。當(dāng)特定動(dòng)作完成后,其相關(guān)信息會(huì)被活動(dòng)的 ACTIVITIES 事件監(jiān)控器收集到。
每個(gè)閾值都有一個(gè)應(yīng)用范圍。閾值的作用域定義其可以操作的數(shù)據(jù)庫(kù)對(duì)象。只有在該閾值范圍內(nèi)發(fā)生的動(dòng)作才會(huì)受其影響。閾值的作用域可以是:
數(shù)據(jù)庫(kù)(Database)
服務(wù)父類(Service superclass )
服務(wù)子類(Service subclass )
工作動(dòng)作(Work action )
工作負(fù)載(Workload )
閾值即可以是 predictive ,也可以是 reactive,也就是說,我們可以定義閾值是前觸發(fā)還是后觸發(fā)
前觸發(fā)閾值是在相應(yīng)的工作開始之前進(jìn)行檢查。數(shù)據(jù)服務(wù)器通過 SQL 編譯器得到使用資源的估計(jì)值,檢查前觸發(fā)閾值是否會(huì)被觸發(fā)。
后觸發(fā)閾值是在相應(yīng)的工作開始之后進(jìn)行檢查的。通過對(duì)控制資源的大體運(yùn)行時(shí)間使用估計(jì),來評(píng)估是否達(dá)到了后觸發(fā)閾值的邊界。運(yùn)行時(shí)間使用估計(jì)不是連續(xù)獲得的,而是在每個(gè)(特定工作生命周期中)預(yù)先選擇的檢查點(diǎn)進(jìn)行獲取。
需要注意的是,閾值不是適合所有的語(yǔ)句,比如,閾值不能應(yīng)用在 COMMIT, ROLLBACK, AVEPOINT 以及 ROLLBACK to SAVEPOINT 等。
你可以使用 CREATE THRESHOLD 創(chuàng)建閾值,使用 ALTER THRESHOLD 修改閾值,還可以使用 DROP THRESHOLD 刪除閾值。如果想查詢你定義的閾值,可以查詢 SYSCAT.THRESHOLDS 系統(tǒng)視圖。
下面我們繼續(xù)在窗口 1 中來創(chuàng)建一個(gè)閾值,來限制包含大的查詢的服務(wù)類,閾值的范圍是整個(gè)數(shù)據(jù)庫(kù),閾值的邊界是當(dāng) ESTIMATEDSQLCOST 大于 100000,ESTIMATEDSQLCOST 能夠返回優(yōu)化器分配給 DML 語(yǔ)句相關(guān)活動(dòng)成本的估計(jì)值,具體如清單 17 所示:
清單 17 . 在窗口 1 中創(chuàng)建一個(gè)閾值,限制包含大查詢的服務(wù)類
C:> db2 connect to db2test1 user administrator using passw0rd
數(shù)據(jù)庫(kù)連接信息
數(shù)據(jù)庫(kù)服務(wù)器 = DB2 / NT 9.5.0
SQL 授權(quán)標(biāo)識(shí) = ADMINIST . . .
本地?cái)?shù)據(jù)庫(kù)別名 = DB2TEST1
C:> db2 -tvf createthreshold.sql
ALTER THRESHOLD LargeQuery DISABLE
DB21034E 該命令被當(dāng)作 SQL 語(yǔ)句來處理,因?yàn)樗菬o效的“命令行處理器”命令。在
SQL 處理期間,它返回:
SQL0204N ' LARGEQUERY ' 是一個(gè)未定義的名稱。 SQLSTATE = 42704
DROP THRESHOLD LargeQuery
DB21034E 該命令被當(dāng)作 SQL 語(yǔ)句來處理,因?yàn)樗菬o效的“命令行處理器”命令。在
SQL 處理期間,它返回:
SQL0204N ' LARGEQUERY ' 是一個(gè)未定義的名稱。 SQLSTATE = 42704
CREATE THRESHOLD LargeQuery FOR service class SUPER_CLASS ACTIVITIES
ENFORCEMENT DATABASE WHEN ESTIMATEDSQLCOST > 100000 STOP EXECUTION
DB20000I SQL命令成功完成。
繼續(xù)在窗口 2 中執(zhí)行一個(gè)大的查詢(此時(shí)我們的用戶是 RHETTE,如果執(zhí)行查詢,該查詢會(huì)屬于 SUPER_CLASS 服務(wù)類),這時(shí)我們會(huì)收到“ SQL4712N 已超過閾值 ‘ LARGEQUERY ’。原因碼 = ‘7’。 SQLSTATE = 5U026”的錯(cuò)誤信息,這是因?yàn)槲覀儓?zhí)行的查詢超過了我們預(yù)先定義的邊界,具體如清單 18 所示:
清單18 . 在窗口 2 中執(zhí)行一個(gè)大型查詢
C:> db2 connect to db2test1 user rhette using passw0rd
數(shù)據(jù)庫(kù)連接信息
數(shù)據(jù)庫(kù)服務(wù)器 = DB2 / NT 9.5.0
SQL 授權(quán)標(biāo)識(shí) = RHETTE
本地?cái)?shù)據(jù)庫(kù)別名 = DB2TEST1
C:> db2 select count ( * ) from project , project , project , project , project ,
project
SQL4712N 已超過閾值 ' LARGEQUERY '。原因碼 = ' 7 '。 SQLSTATE = 5U026
接下來我們創(chuàng)建一個(gè)新的閾值,用來限制同一條 SQL,并發(fā)執(zhí)行數(shù)大于 1,我們繼續(xù)在窗口 1 中發(fā)出 CREATE THRESHOLD 語(yǔ)句,創(chuàng)建新的閾值 MYCUNCURRENT,閾值范圍是整個(gè)數(shù)據(jù)庫(kù),閾值的邊界 CONCURRENTDBCOORDACTIVITIES 大于 1。CONCURRENTDBCOORDACTIVITIES 用來表示某個(gè)特定動(dòng)作的并發(fā)執(zhí)行數(shù)。具體如清單 19 所示:
清單 19 . 在窗口 1 中創(chuàng)建一個(gè)閾值,限制并發(fā)執(zhí)行數(shù)
C:>db2 -tvf crtThresCurrency.sql
ALTER THRESHOLD MYCUNCURRENT DISABLE
DB21034E 該命令被當(dāng)作 SQL 語(yǔ)句來處理,因?yàn)樗菬o效的“命令行處理器”命令。在
SQL 處理期間,它返回:
SQL0204N ' MYCUNCURRENT ' 是一個(gè)未定義的名稱。 SQLSTATE = 42704
DROP THRESHOLD MYCUNCURRENT
DB21034E 該命令被當(dāng)作 SQL 語(yǔ)句來處理,因?yàn)樗菬o效的“命令行處理器”命令。在
SQL 處理期間,它返回:
SQL0204N ' MYCUNCURRENT ' 是一個(gè)未定義的名稱。 SQLSTATE = 42704
CREATE THRESHOLD MYCUNCURRENT FOR SERVICE CLASS subclass_db2admin
UNDER super_class ACTIVITIES ENFORCEMENT DATABASE WHEN CONCURRENTDBCOORDACTIVITIES > 1
STOP EXECUTION
DB20000I SQL命令成功完成。
命令成功完成。我們繼續(xù)在窗口 2 中用 DB2ADMIN 用戶連上示例數(shù)據(jù)庫(kù) DB2TEST1,具體如清單 20 所示:
清單20 . 在窗口 2 中執(zhí)行一個(gè)簡(jiǎn)單查詢
C:> db2 connect reset
DB20000I SQL命令成功完成。
C:> db2 connect to db2test1 user db2admin using passw0rd
數(shù)據(jù)庫(kù)連接信息
數(shù)據(jù)庫(kù)服務(wù)器 = DB2 / NT 9.5.0
SQL 授權(quán)標(biāo)識(shí) = DB2ADMIN
本地?cái)?shù)據(jù)庫(kù)別名 = DB2TEST1
命令成功完成。我們繼續(xù)在窗口 3 中用 DB2ADMIN 用戶連上示例數(shù)據(jù)庫(kù) DB2TEST1,基本上同時(shí)在窗口 2 和窗口 3 執(zhí)行一個(gè)同樣的查詢,會(huì)發(fā)現(xiàn)窗口 2 執(zhí)行成功,窗口3執(zhí)行失敗,報(bào)“ SQL4712N 已超過閾值 ‘MYCUNCURRENT’。原因碼 = ‘6'。 ’SQLSTATE = 5U026”錯(cuò)誤,這是由于在窗口2執(zhí)行完這條語(yǔ)句后,幾乎同時(shí)在窗口 3 執(zhí)行(此時(shí)窗口 2 中的查詢還沒完成),并發(fā)數(shù)為 2,超過了我們預(yù)定義的閾值邊界。具體如清單 21 所示:
清單 21-1 . 在窗口 2 中執(zhí)行一個(gè)簡(jiǎn)單查詢
C:> db2 select count ( * ) from rhette.project , rhette.project , rhette.project ,
rhette.project , rhette.project
1
- - - - - - - - - - - - - - - - - - - - - -
3200000
1 條記錄已選擇。
清單 21-2 . 在窗口 3 中執(zhí)行同一個(gè)簡(jiǎn)單查詢
C:> db2 select count ( * ) from rhette.project , rhette.project , rhette.project ,
rhette.project , rhette.project
SQL4712N 已超過閾值 ' MYCUNCURRENT '。原因碼 = ' 6 '。 SQLSTATE = 5U026
從上面兩個(gè)例子我們可以看到,WHEN 后可以跟不同的閾值謂詞( threshold-predicate ),閾值謂詞用來指定閾值的條件,可以是以下選項(xiàng):
TOTALDBPARTITIONCONNECTIONS > integer-value
這個(gè)條件定義了在一個(gè)數(shù)據(jù)庫(kù)分區(qū)上可以同時(shí)運(yùn)行的協(xié)調(diào)器( coordinator )連接的數(shù)量上限。條件值可以是任何正整數(shù),包括零(如果違反,則會(huì)報(bào) SQLSTATE 42820 )。零的意思是所有新的協(xié)調(diào)器連接將被阻止連接。所有當(dāng)前運(yùn)行或當(dāng)前隊(duì)列中的連接都將繼續(xù),不會(huì)被阻止。這個(gè)條件的定義域( definition domain )必須是數(shù)據(jù)庫(kù)( DATABASE ),而且其執(zhí)行范圍( enforcement scope )必須是分區(qū)( PARTITION ),如果違反了,將報(bào) SQLSTATE 5U037 錯(cuò)誤,閾值無法創(chuàng)建,因?yàn)樗`反了限制。
TOTALSCPARTITIONCONNECTIONS > integer-value
這個(gè)條件定義了在一個(gè)數(shù)據(jù)庫(kù)分區(qū)上特定的服務(wù)父類中可以同時(shí)運(yùn)行的協(xié)調(diào)器( coordinator )連接的數(shù)量上限。條件值可以是任何正整數(shù),包括零(如果違反,則會(huì)報(bào) SQLSTATE 42820 )。零的意思是新的連接將被阻止加入服務(wù)類中。所有當(dāng)前運(yùn)行或當(dāng)前隊(duì)列中的連接都將繼續(xù),不會(huì)被阻止。這個(gè)條件的定義域( definition domain )必須是服務(wù)父類( SERVICE SUPERCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是分區(qū)( PARTITION ),如果違反了,將報(bào) SQLSTATE 5U037 錯(cuò)誤,閾值無法創(chuàng)建,因?yàn)樗`反了限制。
AND QUEUEDCONNECTIONS > integer-value or AND QUEUEDCONNECTIONS UNBOUNDED
當(dāng)允許的協(xié)調(diào)器連接最大值被超過時(shí),用指定的隊(duì)列大小(緩存這些連接)。條件值可以是任何正整數(shù),包括零(如果違反,則會(huì)報(bào) SQLSTATE 42820)。零的意思是沒有協(xié)調(diào)器連接將被放入隊(duì)列中。指定 UNBOUNDED,意味著將把所有超過協(xié)調(diào)器連接最大值的連接放入到隊(duì)列中,并且 threshold-exceeded-actions 不會(huì)被執(zhí)行。默認(rèn)值是零。
CONNECTIONIDLETIME > integer-value (DAY | DAYS | HOUR | HOURS | MINUTE | MINUTES )
這個(gè)條件定義了數(shù)據(jù)庫(kù)管理器允許一個(gè)連接保持空閑狀態(tài)的時(shí)間上限。條件值可以是任何非零的正整數(shù)(如果違反,則會(huì)報(bào) SQLSTATE 42820 )。使用一個(gè)合法的持續(xù)時(shí)間關(guān)鍵字,為 integer-value 指定適當(dāng)?shù)臅r(shí)間單位。這個(gè)條件的定義域( definition domain )必須是數(shù)據(jù)庫(kù)( DATABASE )或服務(wù)父類( SERVICE SUPERCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是數(shù)據(jù)庫(kù)( DATABASE ),如果違反了,將報(bào) SQLSTATE 5U037 錯(cuò)誤,閾值無法創(chuàng)建,因?yàn)樗`反了限制。這個(gè)條件將在協(xié)調(diào)器數(shù)據(jù)庫(kù)分區(qū)上作為邏輯條件被強(qiáng)制執(zhí)行。
因?yàn)檫@個(gè)閾值的最小粒度是五分鐘,指定的值將圍繞著五分鐘的非零倍數(shù)。萬(wàn)一指定的值不是五分鐘的非零倍數(shù)(超過或小于),那么將自動(dòng)選擇一個(gè)最接近五分鐘非零倍數(shù)的整數(shù)值。這個(gè)閾值的最大值是 2 147 483 400 秒。任何指定的值(使用天、小時(shí)、分鐘或者秒),如果其換算成秒的值大于 2 147 483 400 秒,則其將被截?cái)酁?2 147 483 400 秒。修改 DB2CHECKCLIENTINTERVAL 注冊(cè)表變量引起檢查頻率變低可能會(huì)影響這個(gè)閾值的粒度。
CONCURRENTWORKLOADOCCURRENCES > integer-value
這個(gè)條件定義在每個(gè)數(shù)據(jù)庫(kù)分區(qū)上運(yùn)行的并發(fā)工作負(fù)載的數(shù)量上限。這個(gè)條件值可以被設(shè)成任何非零整數(shù)值(如果違反,則會(huì)報(bào) SQLSTATE 42820 )。條件的定義域( definition domain )必須是 WORKLOAD,如果違反了,將報(bào) SQLSTATE 5U037 錯(cuò)誤,閾值無法創(chuàng)建,因?yàn)樗`反了限制。
CONCURRENTWORKLOADACTIVITIES > integer-value
這個(gè)條件定義了每個(gè)數(shù)據(jù)庫(kù)分區(qū)上工作負(fù)載的并發(fā)協(xié)調(diào)器活動(dòng)和嵌套活動(dòng)的數(shù)量上限。這個(gè)條件值可以是任何非零正整數(shù)值(如果違反,則會(huì)報(bào) SQLSTATE 42820 )。條件的執(zhí)行范圍( enforcement scope )必須是 WORKLOAD OCCURRENCE,如果違反了,將報(bào) SQLSTATE 5U037 錯(cuò)誤,閾值無法創(chuàng)建,因?yàn)樗`反了限制。
CONCURRENTDBCOORDACTIVITIES > integer-value
這個(gè)條件定義在所有的數(shù)據(jù)庫(kù)分區(qū)上指定的作用域中可以并發(fā)運(yùn)行的數(shù)據(jù)庫(kù)協(xié)調(diào)器活動(dòng)( database coordinator activities )的數(shù)量上限。條件值可以是任何正整數(shù),包括零(如果違反,則會(huì)報(bào) SQLSTATE 42820 )。零的意思是任何新的數(shù)據(jù)庫(kù)協(xié)調(diào)器活動(dòng)將被阻止執(zhí)行。所有當(dāng)前運(yùn)行或當(dāng)前隊(duì)列中的數(shù)據(jù)庫(kù)協(xié)調(diào)器活動(dòng)都將繼續(xù),不會(huì)被阻止。這個(gè)條件的定義域( definition domain )必須是數(shù)據(jù)庫(kù)( DATABASE ),工作動(dòng)作( WORK ACTION ),服務(wù)父類( SERVICE SUPERCLASS ),或者服務(wù)子類( SERVICE SUBCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是數(shù)據(jù)庫(kù)( DATABASE ),如果違反了,將報(bào) SQLSTATE 5U037 錯(cuò)誤,閾值無法創(chuàng)建,因?yàn)樗`反了限制。
AND QUEUEDACTIVITIES > integer-value or AND QUEUEDACTIVITIES UNBOUNDED
當(dāng)允許的數(shù)據(jù)庫(kù)協(xié)調(diào)器活動(dòng)( database coordinator activities )最大值被超過時(shí),用指定的隊(duì)列大小(緩存這些數(shù)據(jù)庫(kù)協(xié)調(diào)器活動(dòng))。條件值可以是任何正整數(shù),包括零(如果違反,則會(huì)報(bào) SQLSTATE 42820 )。零的意思是沒有數(shù)據(jù)庫(kù)協(xié)調(diào)器活動(dòng)將被放入隊(duì)列中。指定 UNBOUNDED,意味著將把所有超過數(shù)據(jù)庫(kù)協(xié)調(diào)器活動(dòng)最大值的活動(dòng)放入到隊(duì)列中,并且 threshold-exceeded-actions 不會(huì)被執(zhí)行。默認(rèn)值是零。
ESTIMATEDSQLCOST > bigint-value
這個(gè)條件定義了一個(gè)活動(dòng)的優(yōu)化器分配成本的上限。條件值可以是任何非零正整數(shù)(如果違反,則會(huì)報(bào) SQLSTATE 42820)。這個(gè)條件的定義域( definition domain )必須是數(shù)據(jù)庫(kù)( DATABASE ),工作動(dòng)作( WORK ACTION ),服務(wù)父類( SERVICE SUPERCLASS ),或者服務(wù)子類( SERVICE SUBCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是數(shù)據(jù)庫(kù)( DATABASE ),如果違反了,將報(bào) SQLSTATE 5U037 錯(cuò)誤,閾值無法創(chuàng)建,因?yàn)樗`反了限制。這個(gè)條件在協(xié)調(diào)器數(shù)據(jù)庫(kù)分區(qū)上是被強(qiáng)制執(zhí)行的。被這個(gè)條件跟蹤的活動(dòng)有:
DML協(xié)調(diào)器活動(dòng)
那些被用戶邏輯調(diào)用的嵌套DML活動(dòng)。因此,那些可以被數(shù)據(jù)庫(kù)管理器初始化的DML活動(dòng)(比如,實(shí)用程序,存儲(chǔ)過程,嵌入式 SQL 等)都不會(huì)被這個(gè)條件跟蹤(除非他們的開支是被包含在他們的調(diào)用者評(píng)估上的,也就是間接被跟蹤)。
SQLROWSRETURNED > integer-value
這個(gè)條件定義了返回給(應(yīng)用服務(wù)器上的)應(yīng)用客戶端的行數(shù)上限。條件值可以是任何非零正整數(shù)(如果違反,則會(huì)報(bào) SQLSTATE 42820 )。這個(gè)條件的定義域( definition domain )必須是數(shù)據(jù)庫(kù)( DATABASE ),工作動(dòng)作( WORK ACTION ),服務(wù)父類( SERVICE SUPERCLASS ),或者服務(wù)子類( SERVICE SUBCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是數(shù)據(jù)庫(kù)( DATABASE ),如果違反了,將報(bào) SQLSTATE 5U037 錯(cuò)誤,閾值無法創(chuàng)建,因?yàn)樗`反了限制。這個(gè)條件在協(xié)調(diào)器數(shù)據(jù)庫(kù)分區(qū)上是被強(qiáng)制執(zhí)行的。被這個(gè)條件跟蹤的活動(dòng)有:
DML 協(xié)調(diào)器活動(dòng);
那些源自用戶邏輯嵌套 DML 活動(dòng)。因此,那些可以被數(shù)據(jù)庫(kù)管理器初始化的 DML 活動(dòng)(比如,實(shí)用程序,存儲(chǔ)過程,嵌入式 SQL 等)都不會(huì)被這個(gè)條件跟蹤。
在一個(gè)存儲(chǔ)過程內(nèi)部的返回結(jié)果集被分別視同為獨(dú)立的活動(dòng)。沒有存儲(chǔ)過程返回行數(shù)的集合限制。
ACTIVITYTOTALTIME > integer-value ( DAY | DAYS | HOUR | HOURS | MINUTE | MINUTES )
這個(gè)條件定義數(shù)據(jù)庫(kù)管理器允許一個(gè)特定的活動(dòng)執(zhí)行的總時(shí)間上限,包括這個(gè)活動(dòng)排隊(duì)的時(shí)間。條件值可以是任何非零正整數(shù)(如果違反,則會(huì)報(bào) SQLSTATE 42820 )。使用一個(gè)合法的持續(xù)時(shí)間關(guān)鍵字,為 integer-value 指定適當(dāng)?shù)臅r(shí)間單位。這個(gè)條件的定義域( definition domain )必須是數(shù)據(jù)庫(kù)( DATABASE )或服務(wù)父類( SERVICE SUPERCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是數(shù)據(jù)庫(kù)( DATABASE ),如果違反了,將報(bào) SQLSTATE 5U037 錯(cuò)誤,閾值無法創(chuàng)建,因?yàn)樗`反了限制。這個(gè)條件將在協(xié)調(diào)器數(shù)據(jù)庫(kù)分區(qū)上作為邏輯條件被強(qiáng)制執(zhí)行。
因?yàn)檫@個(gè)閾值的最小粒度是五分鐘,指定的值將圍繞著五分鐘的非零倍數(shù)。萬(wàn)一指定的值不是五分鐘的非零倍數(shù)(超過或小于),那么將自動(dòng)選擇一個(gè)最接近五分鐘非零倍數(shù)的整數(shù)值。這個(gè)閾值的最大值是 2 147 483 400 秒。任何指定的值(使用天、小時(shí)、分鐘或者秒),如果其換算成秒的值大于 2 147 483 400 秒,則其將被截?cái)酁?2 147 483 400 秒。修改 DB2CHECKCLIENTINTERVAL 注冊(cè)表變量引起檢查頻率變低可能會(huì)影響這個(gè)閾值的粒度。
SQLTEMPSPACE > integer-value ( K | M | G )
這個(gè)條件定義在任何一個(gè)數(shù)據(jù)庫(kù)分區(qū)上系統(tǒng)臨時(shí)表空間的上限大小。條件值可以是任何非零正整數(shù)(如果違反,則會(huì)報(bào) SQLSTATE 42820 )。
如果指定了 integer-value K (大小或小寫) , 則最大值是 integer-value 乘以 1024;如果指定了 integer-value M (大小或小寫) , 則最大值是 integer-value 乘以 1 048 576;如果指定了 integer-value G (大小或小寫) , 則最大值是 integer-value 乘以 1 073 741 824。
這個(gè)條件的定義域( definition domain )必須是數(shù)據(jù)庫(kù)( DATABASE )或服務(wù)父類( SERVICE SUPERCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是分區(qū)( PARTITION ),如果違反了,將報(bào) SQLSTATE 5U037 錯(cuò)誤,閾值無法創(chuàng)建,因?yàn)樗`反了限制。這個(gè)條件將在協(xié)調(diào)器數(shù)據(jù)庫(kù)分區(qū)上作為邏輯條件被強(qiáng)制執(zhí)行。以下活動(dòng)將被這個(gè)條件跟蹤:
DML 協(xié)調(diào)器活動(dòng)和相應(yīng)的子代理工作( subsection execution );
那些源自用戶邏輯嵌套 DML 活動(dòng)和他們相應(yīng)的子代理工作( subsection execution )。因此,那些可以被數(shù)據(jù)庫(kù)管理器初始化的 DML 活動(dòng)(比如,實(shí)用程序,存儲(chǔ)過程,嵌入式 SQL 等)都不會(huì)被這個(gè)條件跟蹤。
最后,我們繼續(xù)在窗口 1 刪除剛才定義的兩個(gè)閾值 MYCUNCURRENT 和 LargeQuery,同樣的,在刪除之前,需要先把閾值變成不可用。具體如清單 22 所示:
清單22 . 在窗口 1 中刪除閾值
C:> db2 - tvf dropThresholds.sql
ALTER THRESHOLD MYCUNCURRENT DISABLE
DB20000I SQL命令成功完成。
DROP THRESHOLD MYCUNCURRENT
DB20000I SQL命令成功完成。
ALTER THRESHOLD LargeQuery DISABLE
DB20000I SQL命令成功完成。
DROP THRESHOLD LargeQuery
DB20000I SQL命令成功完成。
命令成功完成,這樣我們就刪除了剛才我們定義的兩個(gè)閾值。
