国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

DB2 V9.5工作負載管理之如何實現(xiàn)工作負載

瀏覽:3日期:2023-11-09 12:25:45

IBM DB2 V9.5 中,新引入的工作負載管理功能( WLM )可以幫助您標識、管理和監(jiān)視數(shù)據(jù)服務器的工作負載。本文將通過示例介紹如何實現(xiàn) DB2 V9.5 的工作負載管理( WLM )相關的功能。

工作負載(WORKLOAD)

工作負載( WORKLOAD )通過工作所在的數(shù)據(jù)庫連接屬性來標識數(shù)據(jù)庫活動。工作負載( WORKLOAD )是用來分配工作給服務類( Service Class )的方法,是一個根據(jù)工作的來源( source )標識區(qū)分工作的對象,以方便隨后對工作進行相應的管理。來源( source )是由工作所在的數(shù)據(jù)庫連接的屬性決定的。

當服務器收到多個用戶請求,首先將對用戶請求進行評估標識(此時處于 WLM 第一階段 標識階段),當其數(shù)據(jù)庫連接屬性符合某個已經(jīng)定義的工作負載,則將其分配給特定工作負載所在的服務類中執(zhí)行。如果不能和已經(jīng)定義的工作負載相匹配,則將用戶請求分配給缺省用戶工作負載所在的缺省用戶服務類中執(zhí)行。

當服務器收到系統(tǒng)請求時,將其分配給默認系統(tǒng)服務類中執(zhí)行。

當服務器收到維護請求時,將其分配給默認維護服務類中執(zhí)行。

默認系統(tǒng)服務類名為: SYSDEFAULTSYSTEMCLASS,其下有一個默認的服務子類: SYSDEFAULTSUBCLASS。

默認維護服務類名為:SYSDEFAULTMAINTENANCECLASS,其下有一個默認的服務子類:SYSDEFAULTSUBCLASS。

默認用戶服務類名為:SYSDEFAULTUSERCLASS,其下有一個默認的服務子類:SYSDEFAULTSUBCLASS。

圖 3 . 服務類和工作負載

DB2 V9.5工作負載管理之如何實現(xiàn)工作負載

接下來我們繼續(xù)在剛才的 DB2CLP 窗口發(fā)出 ALTER WORKLOAD 命令,使工作負載 WL_RHETTE 和 WL_DB2ADMIN 失效。然后發(fā)出 DROP WORKLOAD 命令,刪除工作負載 WL_RHETTE 和 WL_DB2ADMIN。最后發(fā)出 CREATE WORKLOAD 命令,創(chuàng)建工作負載工 WL_RHETTE 和 WL_DB2ADMIN。工作負載 WL_RHETTE 對應的服務子類是 subclass_rhette,對應的服務父類是 super_class。工作負載 WL_DB2ADMIN 對應的服務子類是 subclass_db2admin,對應的服務父類是 super_class。需要注意的是,如果你想刪除一個工作負載,那么必須先讓該工作負載失效。具體如清單8所示:

清單8 . 創(chuàng)建工作負載 WL_RHETTE 和 WL_DB2ADMIN

C:> db2 -tvf wl_create.sql

alter workload wl_rhette disable

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

SQL 處理期間,它返回:

SQL0204N " WL_RHETTE " 是一個未定義的名稱。 SQLSTATE = 42704

alter workload wl_db2admin disable

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

SQL 處理期間,它返回:

SQL0204N " WL_DB2ADMIN " 是一個未定義的名稱。 SQLSTATE = 42704

drop workload wl_rhette

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

SQL 處理期間,它返回:

SQL0204N " WL_RHETTE " 是一個未定義的名稱。 SQLSTATE = 42704

drop workload wl_db2admin

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

SQL 處理期間,它返回:

SQL0204N " WL_DB2ADMIN " 是一個未定義的名稱。 SQLSTATE = 42704

create workload wl_rhette session_user ( 'RHETTE' ) service class subclass_rhette

under super_class

DB20000I SQL命令成功完成。

create workload wl_db2admin session_user ( 'DB2ADMIN' ) service class subclass_db2

admin under super_class

DB20000I SQL命令成功完成。

命令成功完成,工作負載是通過工作所在的數(shù)據(jù)庫連接屬性來標識數(shù)據(jù)庫活動,數(shù)據(jù)庫連接的屬性可以是:

APPLNAME ( ' application - name ' , . . . )

為APPLNAME連接屬性指定一個或多個應用程序名稱。在列表中同一個應用程序名稱不能出現(xiàn)多次,否則會報 SQLSTATE 42713 錯誤。應用程序名稱是大小寫敏感的,應用程序名稱就是我們執(zhí)行 LIST APPLICATIONS 命令顯示的值。

SYSTEM_USER ( ' authorization – name ' , . . . )

為 SYSTEM USER 連接屬性指定一個或多個授權 ID。在列表中同一個授權 ID 不能出現(xiàn)多次,否則會報 SQLSTATE 42713 錯誤。

SESSION_USER ( ' authorization – name ' , . . . )

為 SESSION USER 連接屬性指定一個或多個授權 ID。需要注意的是,授權 ID 大小寫敏感。在列表中同一個授權 ID 不能出現(xiàn)多次,否則會報 SQLSTATE 42713 錯誤。

SESSION_USER GROUP ( ' authorization – name ' , . . . )

為 SESSION_USER GROUP 連接屬性指定一個或多個授權 ID。在列表中同一個授權 ID 不能出現(xiàn)多次,否則會報 SQLSTATE 42713 錯誤。

SESSION_USER ROLE ( ' authorization – name ' , . . . )

為 SESSION_USER ROLE 連接屬性指定一個或多個授權 ID。這里會話授權ID的角色是指會話授權 ID 所有可用的角色,不管這些角色是怎么獲得的。在列表中同一個授權 ID 不能出現(xiàn)多次,否則會報 SQLSTATE 42713 錯誤。

CURRENT CLIENT_USERID ( ' user – id ' , . . . )

為 CURRENT CLIENT_USERID 連接屬性指定一個或多個客戶端用戶 ID。在列表中同一個客戶端用戶 ID 不能出現(xiàn)多次,否則會報 SQLSTATE 42713 錯誤。

CURRENT CLIENT_APPLNAME ( ' client – application – name ' , . . . )

為 CURRENT CLIENT_APPLNAME 連接屬性指定一個或多個應用程序名稱。在列表中同一個應用程序名稱不能出現(xiàn)多次,否則會報 SQLSTATE 42713 錯誤。這個 client – application – name 是大小寫敏感的,其值就是系統(tǒng)監(jiān)控器輸出中的 " TP Monitor client application name " 值。

CURRENT CLIENT_WRKSTNNAME ( ' workstation – name ' , . . . )

為 CURRENT CLIENT_WRKSTNNAME 連接屬性指定一個或多個客戶端工作站名稱。在列表中同一個客戶端工作站名稱不能出現(xiàn)多次,否則會報 SQLSTATE 42713 錯誤。

CURRENT CLIENT_ACCTNG ( ' accounting – string ' , . . . )

為 CURRENT CLIENT_ACCTNG 連接屬性指定一個或多個 accounting string。在列表中同一個客戶端 accounting string 不能出現(xiàn)多次,否則會報 SQLSTATE 42713 錯誤。

如果想查看已經(jīng)定義的工作負載,可以通過查看系統(tǒng)視圖 SYSCAT.WORKLOADS 的方式查看,也可以通過使用 DB2PD 工具進行查看,需要使用 DB2PD 工具的 workloads 選項。繼續(xù)在當前 DB2CLP 窗口中,發(fā)出 DB2P 命令,部分輸出信息如清單 9 所示:

清單9 . 查看工作負載的定義情況

C:> db2pd -workloads -db db2test1

Database Partition 0 - - Database DB2TEST1 - - Active - - Up 0 days 15:58:51

Workload Definition :

Address WorkloadID WorkloadName DBAccess

0x7E69F2E0 3 WL_RHETTE ALLOW

0x7E69F384 4 WL_DB2ADMIN ALLOW

0x7E69F428 1 SYSDEFAULTUSERWORKLOAD ALLOW

0x7E69F4C0 2 SYSDEFAULTADMWORKLOAD ALLOW

Usage Privilege Holders :

Address WorkloadID Type AuthID

0x7E687774 1 GROUP PUBLIC

Local Partition Workload Statistics :

Address WorkloadID WorkloadName NumWLO

0x7E6861C0 1 SYSDEFAULTUSERWORKLOAD 1

0x7E688D60 2 SYSDEFAULTADMWORKLOAD 0

0x7E69F150 3 WL_RHETTE 0

0x7E686070 4 WL_DB2ADMIN 0

我們也可以通過控制中心查看系統(tǒng)視圖 SYSCAT.WORKLOADS,來看一下我們創(chuàng)建的工作負載情況,具體如圖4所示:

對特定的工作負載(和一個特定的連接相關聯(lián))來說,其會話用戶必須具有該工作負載的 USAGE 特權,如果想查看工作負載相關的 USAGE 特權,可以訪問系統(tǒng)視圖 SYSCAT.WORKLOADAUTH。我們繼續(xù)在當前的 DB2CLP 窗口中,發(fā)出 GRANT 命令,把工作負載 WL_RHETTE 和 WL_DB2ADMIN 的 USAGE 特權賦給 PUBLIC 組,具體如清單 10 所示:

清單 10 . 把工作負載 USAGE 權限分配給 PUBLIC 組

C:> db2 grant usage on workload WL_RHETTE to public

DB20000I SQL命令成功完成。

C:> db2 grant usage on workload WL_DB2ADMIN to public

DB20000I SQL命令成功完成。

下面我們來看一下數(shù)據(jù)庫連接、工作負載和服務類在具體的場景中是什么樣子。

首先,我們關閉當前的 DB2CLP 窗口,再打開三個新的 DB2CLP 窗口,這樣我們就有三個 DB2CLP 窗口,分別稱之為窗口1、窗口2、窗口3。在窗口1中,我們發(fā)出 DB2 CONNECT 命令,連上示例數(shù)據(jù)庫 DB2TEST1,用戶名為 admnistrator,具體如清單 11 所示:

清單11 . 在窗口 1 中使用 admnistrator 用戶連接數(shù)據(jù)庫

C:> db2 connect to db2test1 user administrator using passw0rd

數(shù)據(jù)庫連接信息

數(shù)據(jù)庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = ADMINIST . . .

本地數(shù)據(jù)庫別名 = DB2TEST1

命令成功完成,下面我們在窗口 2 中使用 RHETTE 用戶連接示例數(shù)據(jù)庫 DB2TEST1,并執(zhí)行 SELECT 語句訪問示例表 PROJEC,做一個查詢量小的查詢(用 PROJECT 表外連接自己),具體如清單 12 所示:

清單 12 . 在窗口 2 中使用 RHETTE 用戶連接數(shù)據(jù)庫

C:> db2 connect to db2test1 user rhette using passw0rd

數(shù)據(jù)庫連接信息

數(shù)據(jù)庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = RHETTE

本地數(shù)據(jù)庫別名 = DB2TEST1

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

1

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

8000

1 條記錄已選擇。

命令成功完成,下面我們在窗口 3 中用 DB2ADMIN 用戶連接示例數(shù)據(jù)庫 DB2TEST1,并執(zhí)行 SELECT 語句訪問示例表 PROJEC,做一個查詢量小的查詢(用 PROJECT 表外連接自己),具體如清單 13 所示:

清單13 . 在窗口 2 中使用 DB2ADMIN 用戶連接數(shù)據(jù)庫

C:> db2 connect to db2test1 user db2admin using passw0rd

數(shù)據(jù)庫連接信息

數(shù)據(jù)庫服務器 = DB2 / NT 9.5.0

SQL 授權標識 = DB2ADMIN

本地數(shù)據(jù)庫別名 = DB2TEST1

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

1

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

8000

1 條記錄已選擇。

命令執(zhí)行成功,下面我們回到窗口 1,通過訪問表函數(shù) wlm_get_service_class_workload_occurrences 來獲取當前發(fā)生的工作負載列表,在返回的結果集中,還將返回這些工作負載的一些相關信息,比如其所在的服務子類、服務父類等,具體如清單 14 所示:

清單14 . 在窗口 1 中查看當前發(fā)生的工作負載( workload )

C:>db2 select substr ( session_auth_id , 1 , 8 ) as user,

substr ( char ( application_handle ) , 1 , 7 ) as apphndl,

substr ( workload_name , 1 , 24 ) as workload_name ,

substr ( service_superclass_name , 1 , 19 ) as superclass_name ,

substr ( service_subclass_name , 1 , 18 ) as subclass_name ,

substr ( char ( workload_occurrence_id ) , 1 , 6 ) as wlo_id ,

uow_id from

table ( wlm_get_service_class_workload_occurrences ( cast ( null as varchar ( 128 ) ) ,

cast( nullas varchar ( 128 ) ) , -2 ) ) as scinfo

USER APPHNDL WORKLOAD_NAME SUPERCLASS_NAME

SUBCLASS_NAME WLO_ID UOW_ID

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

ADMINIST 580 SYSDEFAULTUSERWORKLOAD SYSDEFAULTUSERCLASS

SYSDEFAULTSUBCLASS 1 2

RHETTE 599 WL_RHETTE SUPER_CLASS

SUBCLASS_RHETTE 1 2

DB2ADMIN 600 WL_DB2ADMIN SUPER_CLASS

SUBCLASS_DB2ADMIN 1 4

3條記錄已選擇。

命令成功完成,在返回結果中可以看到,當前存在 3 個工作負載。

窗口 1 中 ADMINISTRATOR 用戶所在的數(shù)據(jù)庫連接,對應的工作負載是系統(tǒng)默認用戶工作負載 SYSDEFAULTUSERWORKLOAD,默認用戶工作負載所對應的服務子類是默認用戶服務子類 SYSDEFAULTSUBCLASS,默認用戶工作負載所對應的服務子類是默認用戶服務父類 SYSDEFAULTUSERCLASS。

窗口 2 中 RHETTE 用戶所在的數(shù)據(jù)庫連接,對應的工作負載是我們開始的時候在清單 8 中定義的工作負載 WL_RHETTE,該工作負載所對應的服務子類是 SUBCLASS_RHETTE,該工作負載所對應的服務父類是 SUPER_CLASS。

窗口 3 中 DB2ADMIN 用戶所在的數(shù)據(jù)庫連接,對應的工作負載是我們開始的時候在清單 8 中定義的工作負載 WL_DB2ADMIN ,該工作負載所對應的服務子類是 SUBCLASS_DB2ADMIN,該工作負載所對應的服務父類是 SUPER_CLASS。

下面我看一下同樣的查詢在不同的工作負載下執(zhí)行速度有什么樣的差別。大家還記得我們在清單 6 中定義的服務子類 SUBCLASS_RHETTE 和 SUBCLASS_DB2ADMIN,對其代理優(yōu)先級(也就是使用 CPU 資源的優(yōu)先級)做了不同的定義,服務子類 SUBCLASS_RHETTE 對應的代理優(yōu)先級是 DEFAULT,服務子類 SUBCLASS_DB2ADMIN 的代理優(yōu)先級是 6。

當服務子類的代理優(yōu)先級設成 DEFAULT 時,服務子類繼承服務父類的進程優(yōu)先級。也就是說服務子類 SUBCLASS_RHETTE 繼承服務父類 SUPER_CLASS 的代理優(yōu)先級,而 SUPER_CLASS 的代理優(yōu)先級也是 DEFAULT。當代理優(yōu)先級設置為 DEFAULT 時,沒有特殊的操作發(fā)生,服務類中的代理將按照所有的 DB2 線程一樣的優(yōu)先級進行調(diào)度。DEDAULT 對應的值是 -32768。

服務子類 SUBCLASS_DB2ADMIN 的代理優(yōu)先級是 6,則意味這代理真正的優(yōu)先級將是正常優(yōu)先級加上 AGENT PRIORITY,并將在下次動作時生效。比如,如果正常的優(yōu)先級是 20,并且我們把這個參數(shù)設置成 6,那么服務類中的代理的優(yōu)先級是 20+6=26.

在 Windows 平臺,優(yōu)先級為負值則意味著優(yōu)先級低,所以服務子類 SUBCLASS_DB2ADMIN 的代理優(yōu)先級比服務子類 SUBCLASS_RHETTE 高。

在窗口 1、2、3 中都斷開原有的數(shù)據(jù)庫連接。然后在窗口 2 中,使用 RHETTE 用戶連接示例數(shù)據(jù)庫 DB2TEST1,在窗口 3 中,使用 RHETTE 用戶連接示例數(shù)據(jù)庫 DB2TEST1,然后在兩個窗口中幾乎同時執(zhí)行如下語句:

db2 select count ( * ) from rhette.project , rhette.project , rhette.project , rhette.project , rhette.project , rhette.project

可以發(fā)現(xiàn)窗口 2 和窗口 3 這條語句執(zhí)行的時間也差不多。

但當我們在窗口 3 中用 DB2ADMIN 連接示例數(shù)據(jù)庫 DB2TEST1 時,還是執(zhí)行剛才的 SELECT 語句,就會發(fā)現(xiàn)窗口 3 比窗口 2 快很多,這是因為 DB2ADMIN 用戶執(zhí)行的語句所在的服務子類 SUBCLASS_DB2ADMIN 代理優(yōu)先級高的原因。

如果想查看服務類或服務子類執(zhí)行的次數(shù),可以通過訪問表函數(shù) WLM_GET_SERVICE_SUBCLASS_STATS 來查看,比如我們在窗口 1 中發(fā)出如下命令,具體如清單 15 所示:

清單15 . 在窗口 1 中查看服務類或服務子類執(zhí)行的次數(shù)

C:> db2 select substr ( service_superclass_name , 1 , 19 ) as superclass_name ,

substr ( service_subclass_name , 1 , 18 ) as subclass_name ,

substr ( char ( dbpartitionnum ) , 1 , 4 ) as part , concurrent_act_top as acttop ,

coord_act_completed_total as completed from

table ( WLM_GET_SERVICE_SUBCLASS_STATS ( cast ( null as VARCHAR ( 128 ) ) ,

cast ( null as VARCHAR ( 128 ) ) , -2 ) ) as scstats order by superclass_name ,

subclass_name , part

SUPERCLASS_NAME SUBCLASS_NAME PART ACTTOP COMPLETED

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

SUPER_CLASS SUBCLASS_DB2ADMIN 0 1 1

SUPER_CLASS SUBCLASS_RHETTE 0 1 4

SUPER_CLASS SYSDEFAULTSUBCLASS 0 0 0

SYSDEFAULTMAINTENAN SYSDEFAULTSUBCLASS 0 0 0

SYSDEFAULTSYSTEMCLA SYSDEFAULTSUBCLASS 0 0 0

SYSDEFAULTUSERCLASS SYSDEFAULTSUBCLASS 0 1 5

6 條記錄已選擇。

C:>

命令執(zhí)行成功,關于表函數(shù) WLM_GET_SERVICE_SUBCLASS_STATS 更多的信息可以查看 DB2 V9.5 信息中心。另外,還可以通過訪問表函數(shù) WLM_GET_WORKLOAD_STATS 來查看多少工作負載完成、失敗或者被拒絕,比如我們在窗口 1 中發(fā)出如清單 16 所示的語句:

清單 16 . 在窗口 1 中查看工作負載的執(zhí)行情況

C:> db2 select substr ( workload_name , 1 , 24 ) as wl_def_name,

concurrent_wlo_top as wlo_top, concurrent_wlo_act_top as wlo_act_top ,

int ( coord_act_completed_total ) as completed,

int ( coord_act_aborted_total ) as aborted,

int( coord_act_rejected_total ) as rejected

from table( WLM_GET_WORKLOAD_STATS ( cast ( null as varchar( 128 ) ) , -2 ) )

as wlstats order by wl_def_name

WL_DEF_NAME WLO_TOP WLO_ACT_TOP COMPLETED ABORTED REJECTED

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

SYSDEFAULTADMWORKLOAD 0 0 0 0 0

SYSDEFAULTUSERWORKLOAD 1 1 6 0 0

WL_DB2ADMIN 1 1 1 2 0

WL_RHETTE 1 1 4 2 0

4 條記錄已選擇。

相關文章:
主站蜘蛛池模板: 久久国产夜色精品噜噜亚洲a | 国产日产亚洲系列首页 | 美国毛片亚洲社区在线观看 | 日本特黄特色视频 | 日韩精品首页 | 亚洲精品高清在线观看 | 午夜性片 | 国产亚洲欧美视频 | 国产精品久久久久久久 | 久久国内视频 | 国产精品成aⅴ人片在线观看 | 久在草在线 | 国产亚洲综合精品一区二区三区 | 国产精品一区二区四区 | 日本高清色本在线www游戏 | 亚洲自拍图片区 | 久久久久久久久久久视频国内精品视频 | 欧美一级毛片免费大片 | 在线观看精品视频一区二区三区 | 好男人天堂网 | 久久无码精品一区二区三区 | 日韩一级欧美一级毛片在线 | 99在线视频精品 | 99久久99久久精品免费看子伦 | 国产精品午夜国产小视频 | 亚洲最大网站在线 | 在线日韩三级 | 成 人 黄 色 大 片 | 免费精品一区二区三区在线观看 | 亚洲国产日韩女人aaaaaa毛片在线 | 亚洲欧美中文日韩二区一区 | 国产一区二区久久 | 97久久精品视频 | 欧美不卡一区 | 欧美日韩在线观看精品 | 欧美亚洲欧美区 | 日本不卡免费高清一级视频 | 中文字幕日韩在线 | 97在线视频免费公开观看 | 一级片视频免费看 | 波多野结衣被强在线视频 |