午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

DB2 V9.5工作負載管理之閾值(THRESHOLD)

瀏覽:287日期:2023-11-09 11:25:36
在 DB2 V9.5 中,新引入的工作負載管理功能( WLM )可以幫助您標識、管理和監(jiān)視數據服務器的工作負載。本文將重點介紹 DB2 V9.5 關于工作負載管理(WLM)的閾值(THRESHOLD)設置相關的概念,并結合實際的例子幫助大家理解和提高。

閾值( THRESHOLD )

可以通過創(chuàng)建閾值的方式對服務類所使用的資源進行控制,閾值可以根據不同的類型進行創(chuàng)建。閾值提供一種方法,用來控制每種工作能夠使用的資源數量。在工作負載管理( WLM )解決方案中,你可以使用閾值來防止系統(tǒng)過載或者資源被濫用現象的發(fā)生。通過閾值,你可以直接對特定的資源設置限定,當超過限定時,就會觸發(fā)特定的動作。

支持的動作有:

STOP EXECUTION:停止違反閾值的相關動作

CONTINUE:繼續(xù)執(zhí)行

收集違反閾值的相關動作信息

不管違反閾值的特定動作被停止還是繼續(xù)執(zhí)行,你都可以收集該動作的詳細信息。當特定動作完成后,其相關信息會被活動的 ACTIVITIES 事件監(jiān)控器收集到。

每個閾值都有一個應用范圍。閾值的作用域定義其可以操作的數據庫對象。只有在該閾值范圍內發(fā)生的動作才會受其影響。閾值的作用域可以是:

數據庫(Database)

服務父類(Service superclass )

服務子類(Service subclass )

工作動作(Work action )

工作負載(Workload )

閾值即可以是 predictive ,也可以是 reactive,也就是說,我們可以定義閾值是前觸發(fā)還是后觸發(fā)

前觸發(fā)閾值是在相應的工作開始之前進行檢查。數據服務器通過 SQL 編譯器得到使用資源的估計值,檢查前觸發(fā)閾值是否會被觸發(fā)。

后觸發(fā)閾值是在相應的工作開始之后進行檢查的。通過對控制資源的大體運行時間使用估計,來評估是否達到了后觸發(fā)閾值的邊界。運行時間使用估計不是連續(xù)獲得的,而是在每個(特定工作生命周期中)預先選擇的檢查點進行獲取。

需要注意的是,閾值不是適合所有的語句,比如,閾值不能應用在 COMMIT, ROLLBACK, AVEPOINT 以及 ROLLBACK to SAVEPOINT 等。

你可以使用 CREATE THRESHOLD 創(chuàng)建閾值,使用 ALTER THRESHOLD 修改閾值,還可以使用 DROP THRESHOLD 刪除閾值。如果想查詢你定義的閾值,可以查詢 SYSCAT.THRESHOLDS 系統(tǒng)視圖。

下面我們繼續(xù)在窗口 1 中來創(chuàng)建一個閾值,來限制包含大的查詢的服務類,閾值的范圍是整個數據庫,閾值的邊界是當 ESTIMATEDSQLCOST 大于 100000,ESTIMATEDSQLCOST 能夠返回優(yōu)化器分配給 DML 語句相關活動成本的估計值,具體如清單 17 所示:

清單 17 . 在窗口 1 中創(chuàng)建一個閾值,限制包含大查詢的服務類

C:> db2 connect to db2test1 user administrator using passw0rd

數據庫連接信息

數據庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = ADMINIST . . .

本地數據庫別名 = DB2TEST1

C:> db2 -tvf createthreshold.sql

ALTER THRESHOLD LargeQuery DISABLE

DB21034E 該命令被當作 SQL 語句來處理,因為它是無效的“命令行處理器”命令。在

SQL 處理期間,它返回:

SQL0204N ' LARGEQUERY ' 是一個未定義的名稱。 SQLSTATE = 42704

DROP THRESHOLD LargeQuery

DB21034E 該命令被當作 SQL 語句來處理,因為它是無效的“命令行處理器”命令。在

SQL 處理期間,它返回:

SQL0204N ' LARGEQUERY ' 是一個未定義的名稱。 SQLSTATE = 42704

CREATE THRESHOLD LargeQuery FOR service class SUPER_CLASS ACTIVITIES

ENFORCEMENT DATABASE WHEN ESTIMATEDSQLCOST > 100000 STOP EXECUTION

DB20000I SQL命令成功完成。

繼續(xù)在窗口 2 中執(zhí)行一個大的查詢(此時我們的用戶是 RHETTE,如果執(zhí)行查詢,該查詢會屬于 SUPER_CLASS 服務類),這時我們會收到“ SQL4712N 已超過閾值 ‘ LARGEQUERY ’。原因碼 = ‘7’。 SQLSTATE = 5U026”的錯誤信息,這是因為我們執(zhí)行的查詢超過了我們預先定義的邊界,具體如清單 18 所示:

清單18 . 在窗口 2 中執(zhí)行一個大型查詢

C:> db2 connect to db2test1 user rhette using passw0rd

數據庫連接信息

數據庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = RHETTE

本地數據庫別名 = DB2TEST1

C:> db2 select count ( * ) from project , project , project , project , project ,

project

SQL4712N 已超過閾值 ' LARGEQUERY '。原因碼 = ' 7 '。 SQLSTATE = 5U026

接下來我們創(chuàng)建一個新的閾值,用來限制同一條 SQL,并發(fā)執(zhí)行數大于 1,我們繼續(xù)在窗口 1 中發(fā)出 CREATE THRESHOLD 語句,創(chuàng)建新的閾值 MYCUNCURRENT,閾值范圍是整個數據庫,閾值的邊界 CONCURRENTDBCOORDACTIVITIES 大于 1。CONCURRENTDBCOORDACTIVITIES 用來表示某個特定動作的并發(fā)執(zhí)行數。具體如清單 19 所示:

清單 19 . 在窗口 1 中創(chuàng)建一個閾值,限制并發(fā)執(zhí)行數

C:>db2 -tvf crtThresCurrency.sql

ALTER THRESHOLD MYCUNCURRENT DISABLE

DB21034E 該命令被當作 SQL 語句來處理,因為它是無效的“命令行處理器”命令。在

SQL 處理期間,它返回:

SQL0204N ' MYCUNCURRENT ' 是一個未定義的名稱。 SQLSTATE = 42704

DROP THRESHOLD MYCUNCURRENT

DB21034E 該命令被當作 SQL 語句來處理,因為它是無效的“命令行處理器”命令。在

SQL 處理期間,它返回:

SQL0204N ' MYCUNCURRENT ' 是一個未定義的名稱。 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 用戶連上示例數據庫 DB2TEST1,具體如清單 20 所示:

清單20 . 在窗口 2 中執(zhí)行一個簡單查詢

C:> db2 connect reset

DB20000I SQL命令成功完成。

C:> db2 connect to db2test1 user db2admin using passw0rd

數據庫連接信息

數據庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = DB2ADMIN

本地數據庫別名 = DB2TEST1

命令成功完成。我們繼續(xù)在窗口 3 中用 DB2ADMIN 用戶連上示例數據庫 DB2TEST1,基本上同時在窗口 2 和窗口 3 執(zhí)行一個同樣的查詢,會發(fā)現窗口 2 執(zhí)行成功,窗口3執(zhí)行失敗,報“ SQL4712N 已超過閾值 ‘MYCUNCURRENT’。原因碼 = ‘6'。 ’SQLSTATE = 5U026”錯誤,這是由于在窗口2執(zhí)行完這條語句后,幾乎同時在窗口 3 執(zhí)行(此時窗口 2 中的查詢還沒完成),并發(fā)數為 2,超過了我們預定義的閾值邊界。具體如清單 21 所示:

清單 21-1 . 在窗口 2 中執(zhí)行一個簡單查詢

C:> db2 select count ( * ) from rhette.project , rhette.project , rhette.project ,

rhette.project , rhette.project

1

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

3200000

1 條記錄已選擇。

清單 21-2 . 在窗口 3 中執(zhí)行同一個簡單查詢

C:> db2 select count ( * ) from rhette.project , rhette.project , rhette.project ,

rhette.project , rhette.project

SQL4712N 已超過閾值 ' MYCUNCURRENT '。原因碼 = ' 6 '。 SQLSTATE = 5U026

從上面兩個例子我們可以看到,WHEN 后可以跟不同的閾值謂詞( threshold-predicate ),閾值謂詞用來指定閾值的條件,可以是以下選項:

TOTALDBPARTITIONCONNECTIONS > integer-value

這個條件定義了在一個數據庫分區(qū)上可以同時運行的協(xié)調器( coordinator )連接的數量上限。條件值可以是任何正整數,包括零(如果違反,則會報 SQLSTATE 42820 )。零的意思是所有新的協(xié)調器連接將被阻止連接。所有當前運行或當前隊列中的連接都將繼續(xù),不會被阻止。這個條件的定義域( definition domain )必須是數據庫( DATABASE ),而且其執(zhí)行范圍( enforcement scope )必須是分區(qū)( PARTITION ),如果違反了,將報 SQLSTATE 5U037 錯誤,閾值無法創(chuàng)建,因為它違反了限制。

TOTALSCPARTITIONCONNECTIONS > integer-value

這個條件定義了在一個數據庫分區(qū)上特定的服務父類中可以同時運行的協(xié)調器( coordinator )連接的數量上限。條件值可以是任何正整數,包括零(如果違反,則會報 SQLSTATE 42820 )。零的意思是新的連接將被阻止加入服務類中。所有當前運行或當前隊列中的連接都將繼續(xù),不會被阻止。這個條件的定義域( definition domain )必須是服務父類( SERVICE SUPERCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是分區(qū)( PARTITION ),如果違反了,將報 SQLSTATE 5U037 錯誤,閾值無法創(chuàng)建,因為它違反了限制。

AND QUEUEDCONNECTIONS > integer-value or AND QUEUEDCONNECTIONS UNBOUNDED

當允許的協(xié)調器連接最大值被超過時,用指定的隊列大小(緩存這些連接)。條件值可以是任何正整數,包括零(如果違反,則會報 SQLSTATE 42820)。零的意思是沒有協(xié)調器連接將被放入隊列中。指定 UNBOUNDED,意味著將把所有超過協(xié)調器連接最大值的連接放入到隊列中,并且 threshold-exceeded-actions 不會被執(zhí)行。默認值是零。

CONNECTIONIDLETIME > integer-value (DAY | DAYS | HOUR | HOURS | MINUTE | MINUTES )

這個條件定義了數據庫管理器允許一個連接保持空閑狀態(tài)的時間上限。條件值可以是任何非零的正整數(如果違反,則會報 SQLSTATE 42820 )。使用一個合法的持續(xù)時間關鍵字,為 integer-value 指定適當的時間單位。這個條件的定義域( definition domain )必須是數據庫( DATABASE )或服務父類( SERVICE SUPERCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是數據庫( DATABASE ),如果違反了,將報 SQLSTATE 5U037 錯誤,閾值無法創(chuàng)建,因為它違反了限制。這個條件將在協(xié)調器數據庫分區(qū)上作為邏輯條件被強制執(zhí)行。

因為這個閾值的最小粒度是五分鐘,指定的值將圍繞著五分鐘的非零倍數。萬一指定的值不是五分鐘的非零倍數(超過或小于),那么將自動選擇一個最接近五分鐘非零倍數的整數值。這個閾值的最大值是 2 147 483 400 秒。任何指定的值(使用天、小時、分鐘或者秒),如果其換算成秒的值大于 2 147 483 400 秒,則其將被截斷為 2 147 483 400 秒。修改 DB2CHECKCLIENTINTERVAL 注冊表變量引起檢查頻率變低可能會影響這個閾值的粒度。

CONCURRENTWORKLOADOCCURRENCES > integer-value

這個條件定義在每個數據庫分區(qū)上運行的并發(fā)工作負載的數量上限。這個條件值可以被設成任何非零整數值(如果違反,則會報 SQLSTATE 42820 )。條件的定義域( definition domain )必須是 WORKLOAD,如果違反了,將報 SQLSTATE 5U037 錯誤,閾值無法創(chuàng)建,因為它違反了限制。

CONCURRENTWORKLOADACTIVITIES > integer-value

這個條件定義了每個數據庫分區(qū)上工作負載的并發(fā)協(xié)調器活動和嵌套活動的數量上限。這個條件值可以是任何非零正整數值(如果違反,則會報 SQLSTATE 42820 )。條件的執(zhí)行范圍( enforcement scope )必須是 WORKLOAD OCCURRENCE,如果違反了,將報 SQLSTATE 5U037 錯誤,閾值無法創(chuàng)建,因為它違反了限制。

CONCURRENTDBCOORDACTIVITIES > integer-value

這個條件定義在所有的數據庫分區(qū)上指定的作用域中可以并發(fā)運行的數據庫協(xié)調器活動( database coordinator activities )的數量上限。條件值可以是任何正整數,包括零(如果違反,則會報 SQLSTATE 42820 )。零的意思是任何新的數據庫協(xié)調器活動將被阻止執(zhí)行。所有當前運行或當前隊列中的數據庫協(xié)調器活動都將繼續(xù),不會被阻止。這個條件的定義域( definition domain )必須是數據庫( DATABASE ),工作動作( WORK ACTION ),服務父類( SERVICE SUPERCLASS ),或者服務子類( SERVICE SUBCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是數據庫( DATABASE ),如果違反了,將報 SQLSTATE 5U037 錯誤,閾值無法創(chuàng)建,因為它違反了限制。

AND QUEUEDACTIVITIES > integer-value or AND QUEUEDACTIVITIES UNBOUNDED

當允許的數據庫協(xié)調器活動( database coordinator activities )最大值被超過時,用指定的隊列大小(緩存這些數據庫協(xié)調器活動)。條件值可以是任何正整數,包括零(如果違反,則會報 SQLSTATE 42820 )。零的意思是沒有數據庫協(xié)調器活動將被放入隊列中。指定 UNBOUNDED,意味著將把所有超過數據庫協(xié)調器活動最大值的活動放入到隊列中,并且 threshold-exceeded-actions 不會被執(zhí)行。默認值是零。

ESTIMATEDSQLCOST > bigint-value

這個條件定義了一個活動的優(yōu)化器分配成本的上限。條件值可以是任何非零正整數(如果違反,則會報 SQLSTATE 42820)。這個條件的定義域( definition domain )必須是數據庫( DATABASE ),工作動作( WORK ACTION ),服務父類( SERVICE SUPERCLASS ),或者服務子類( SERVICE SUBCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是數據庫( DATABASE ),如果違反了,將報 SQLSTATE 5U037 錯誤,閾值無法創(chuàng)建,因為它違反了限制。這個條件在協(xié)調器數據庫分區(qū)上是被強制執(zhí)行的。被這個條件跟蹤的活動有:

DML協(xié)調器活動

那些被用戶邏輯調用的嵌套DML活動。因此,那些可以被數據庫管理器初始化的DML活動(比如,實用程序,存儲過程,嵌入式 SQL 等)都不會被這個條件跟蹤(除非他們的開支是被包含在他們的調用者評估上的,也就是間接被跟蹤)。

SQLROWSRETURNED > integer-value

這個條件定義了返回給(應用服務器上的)應用客戶端的行數上限。條件值可以是任何非零正整數(如果違反,則會報 SQLSTATE 42820 )。這個條件的定義域( definition domain )必須是數據庫( DATABASE ),工作動作( WORK ACTION ),服務父類( SERVICE SUPERCLASS ),或者服務子類( SERVICE SUBCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是數據庫( DATABASE ),如果違反了,將報 SQLSTATE 5U037 錯誤,閾值無法創(chuàng)建,因為它違反了限制。這個條件在協(xié)調器數據庫分區(qū)上是被強制執(zhí)行的。被這個條件跟蹤的活動有:

DML 協(xié)調器活動;

那些源自用戶邏輯嵌套 DML 活動。因此,那些可以被數據庫管理器初始化的 DML 活動(比如,實用程序,存儲過程,嵌入式 SQL 等)都不會被這個條件跟蹤。

在一個存儲過程內部的返回結果集被分別視同為獨立的活動。沒有存儲過程返回行數的集合限制。

ACTIVITYTOTALTIME > integer-value ( DAY | DAYS | HOUR | HOURS | MINUTE | MINUTES )

這個條件定義數據庫管理器允許一個特定的活動執(zhí)行的總時間上限,包括這個活動排隊的時間。條件值可以是任何非零正整數(如果違反,則會報 SQLSTATE 42820 )。使用一個合法的持續(xù)時間關鍵字,為 integer-value 指定適當的時間單位。這個條件的定義域( definition domain )必須是數據庫( DATABASE )或服務父類( SERVICE SUPERCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是數據庫( DATABASE ),如果違反了,將報 SQLSTATE 5U037 錯誤,閾值無法創(chuàng)建,因為它違反了限制。這個條件將在協(xié)調器數據庫分區(qū)上作為邏輯條件被強制執(zhí)行。

因為這個閾值的最小粒度是五分鐘,指定的值將圍繞著五分鐘的非零倍數。萬一指定的值不是五分鐘的非零倍數(超過或小于),那么將自動選擇一個最接近五分鐘非零倍數的整數值。這個閾值的最大值是 2 147 483 400 秒。任何指定的值(使用天、小時、分鐘或者秒),如果其換算成秒的值大于 2 147 483 400 秒,則其將被截斷為 2 147 483 400 秒。修改 DB2CHECKCLIENTINTERVAL 注冊表變量引起檢查頻率變低可能會影響這個閾值的粒度。

SQLTEMPSPACE > integer-value ( K | M | G )

這個條件定義在任何一個數據庫分區(qū)上系統(tǒng)臨時表空間的上限大小。條件值可以是任何非零正整數(如果違反,則會報 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。

這個條件的定義域( definition domain )必須是數據庫( DATABASE )或服務父類( SERVICE SUPERCLASS ),而且其執(zhí)行范圍( enforcement scope )必須是分區(qū)( PARTITION ),如果違反了,將報 SQLSTATE 5U037 錯誤,閾值無法創(chuàng)建,因為它違反了限制。這個條件將在協(xié)調器數據庫分區(qū)上作為邏輯條件被強制執(zhí)行。以下活動將被這個條件跟蹤:

DML 協(xié)調器活動和相應的子代理工作( subsection execution );

那些源自用戶邏輯嵌套 DML 活動和他們相應的子代理工作( subsection execution )。因此,那些可以被數據庫管理器初始化的 DML 活動(比如,實用程序,存儲過程,嵌入式 SQL 等)都不會被這個條件跟蹤。

最后,我們繼續(xù)在窗口 1 刪除剛才定義的兩個閾值 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命令成功完成。

命令成功完成,這樣我們就刪除了剛才我們定義的兩個閾值。

標簽: DB2 數據庫
主站蜘蛛池模板: 色黄视频 | 日本黄色xxx | 亚洲精品久久久久 | 亚洲 欧美 日韩 综合 | 亚洲欧美在线综合 | 中文字幕第50页 | 丁香婷婷激情 | 国产精品自拍区 | 手机看片欧美 | 欧美高清不卡 | 黄色一级大片免费看 | 先锋久久| 日韩av一区二区三区四区 | 亚洲美女爱爱 | 国产第一页在线 | jizz18女人高潮| 91精品久久香蕉国产线看观看 | 在线免费观看国产精品 | 国产黄色在线播放 | 中文字幕一区二区视频 | 久久人视频 | 日韩在线小视频 | 欧美手机在线 | 一区二区三区精彩视频 | 正在播放国产精品 | 成人a v视频| 欧日韩在线 | 欧美一区二区免费 | 黄色网入口站 | 中文字幕导航 | 久久久久久久久久国产精品 | 国产sm在线观看 | 国产a一级 | 狠狠草视频 | a天堂中文字幕 | 欧美日韩在线综合 | 日本精品三区 | 久久精品视频在线观看 | 色大师av | 久久六六| 欧美 日韩 中文字幕 |