SNAPDYN_SQL 管理视图和 SNAP_GET_DYN_SQL 表函数-检索 dynsql 逻辑组快照信息
SNAPDYN_SQL 管理视图和 SNAP_GET_DYN_SQL 表函数从 dynsql 逻辑数据组返回快照信息。
MON_GET_PKG_CACHE_STMT 表函数-获取程序包高速缓存语句指标 返回数据库程序包高速缓存中静态和动态 SQL 语句的时间点视图。 如果使用此表函数,那么可以利用版本 9.7中引入的监视基础结构。
根据您使用的是管理视图还是表函数,请参阅下列其中一个部分:
SNAPDYN_SQL 管理视图
此管理视图允许您检索当前连接的数据库的 dynsql 逻辑组快照信息。
此视图返回等同于 GET SNAPSHOT FOR DYNAMIC SQL ON database-alias CLP 命令的信息。
模式为 SYSIBMADM。
请参阅 表 1 ,以获取可返回的完整信息列表。
权限
需要下列其中一个权限才能使用该视图:
- 对 SNAPDYN_SQL 管理视图的 SELECT 特权
- 对 SNAPDYN_SQL 管理视图的 CONTROL 特权
- DATAACCESS 权限
- DBADM 权限
- SQLADM 权限
- ACCESSCTRL 权限
- SECADM 权限
需要下列其中一个权限才能使用表函数:
- 对 SNAP_GET_DYN_SQL 表函数的 EXECUTE 特权
- DATAACCESS 权限
- DBADM 权限
- SQLADM 权限
此外,要访问快照监视器数据,还需要下列其中一个权限:
- SYSMON
- SYSCTRL
- SYSMAINT
- SYSADM
缺省 PUBLIC 特权
在非限制性数据库中,当自动创建视图时,将向 PUBLIC 授予 SELECT 特权。
示例
检索在当前连接的数据库上运行的动态 SQL 的列表,按读取的行数排序。
SELECT PREP_TIME_WORST, NUM_COMPILATIONS, SUBSTR(STMT_TEXT, 1, 60)
AS STMT_TEXT, DBPARTITIONNUM
FROM SYSIBMADM.SNAPDYN_SQL ORDER BY ROWS_READ
下列是从此查询输出的示例。
PREP_TIME_WORST NUM_COMPILATIONS ...
-------------------- -------------------- ...
98 1 ...
9 1 ...
0 0 ...
0 1 ...
0 1 ...
0 1 ...
0 1 ...
0 1 ...
40 1 ...
9 record(s) selected.
此查询的输出(继续)。
... STMT_TEXT ...
... ------------------------------------------------------------ ...
... select prep_time_worst, num_compilations, substr(stmt_text, ...
... select * from dbuser.employee ...
... SET CURRENT LOCALE LC_CTYPE = 'en_US' ...
... select prep_time_worst, num_compilations, substr(stmt_text, ...
... select prep_time_worst, num_compilations, substr(stmt_text, ...
... select * from dbuser.employee ...
... insert into dbuser.employee values(1) ...
... select * from dbuser.employee ...
... insert into dbuser.employee values(1) ...
此查询的输出(继续)。
... DBPARTITIONNUM
... --------------
... 0
... 0
... 0
... 2
... 1
... 2
... 2
... 1
... 0
SNAP_GET_DYN_SQL 表函数
SNAP_GET_DYN_SQL 表函数返回与 SNAPDYN_SQL 管理视图相同的信息,但允许您检索特定数据库成员 (所有数据库成员或所有数据库成员的聚集) 上的特定数据库的信息。
此表函数返回等同于 GET SNAPSHOT FOR DYNAMIC SQL ON database-alias CLP 命令的信息。
请参阅 表 1 ,以获取可返回的完整信息列表。
语法
模式为 SYSPROC。
表函数参数
- dbname
- 类型为 VARCHAR (128) 的输入参数,用于指定与当前连接的数据库在同一实例中的有效数据库名称。 指定目录条目类型为 "Indirect" 或 "Home" 的数据库名称,如 LIST DATABASE DIRECTORY 命令所返回。 指定 NULL 或空字符串以从当前连接的数据库获取快照。
- 成员
- 类型为 INTEGER 的可选输入参数,用于指定有效数据库成员编号。 对当前成员指定 -1 ,或对所有活动成员的聚集指定 -2 。 如果 dbname 未设置为 NULL ,并且 member 设置为 NULL,那么将为 member隐式设置 -1 。 如果未使用此输入选项,即仅提供 dbname ,那么将从数据库处于活动状态的成员返回数据。
如果 dbname 和 member 都设置为 NULL,那么将尝试从 SNAP_WRITE_FILE 过程创建的文件中读取数据。 请注意,此文件可能是在任何时候创建的,这意味着数据可能不是最新的。 如果具有相应快照 API 请求类型的文件不存在,那么 SNAP_GET_DYN_SQL 表函数将为当前连接的数据库和数据库成员号生成快照。
重要信息: 不推荐使用 SYSPROC.SNAP_WRITE_FILE 过程,在将来的发行版中可能会将其除去。 有关更多信息,请参阅 SNAP_WRITE_FILE 过程。
权限
需要下列其中一个权限:
- 对 SNAP_GET_DYN_SQL 表函数的 EXECUTE 特权
- DATAACCESS 权限
此外,要访问快照监视器数据,还需要下列其中一个权限:
- SYSMON
- SYSCTRL
- SYSMAINT
- SYSADM
缺省 PUBLIC 特权
在非限制性数据库中,当自动创建该功能时,将向 PUBLIC 授予 EXECUTE 特权。
示例
检索在当前连接的数据库上运行的动态 SQL 的列表,按读取的行数排序。
SELECT PREP_TIME_WORST, NUM_COMPILATIONS, SUBSTR(STMT_TEXT, 1, 60)
AS STMT_TEXT FROM TABLE(SNAP_GET_DYN_SQL('',-1)) as T
ORDER BY ROWS_READ
下列是从此查询输出的示例。
PREP_TIME_WORST NUM_COMPILATIONS ...
-------------------- ---------------------...
0 0 ...
49 1 ...
0 0 ...
46 1 ...
0 0 ...
0 0 ...
0 0 ...
29 1 ...
0 0 ...
0 0 ...
10 1 ...
0 0 ...
4 0 ...
53 0 ...
0 0 ...
6 1 ...
334 0 ...
0 0 ...
5 0 ...
10 0 ...
599 0 ...
15 1 ...
7 0 ...
23 record(s) selected.此查询的输出(继续)。
... STMT_TEXT
... -----------------------------------------------------------
... SET :HV00017 :HI00017 = RPAD(VARCHAR(:HV00035 :HI00035 ),
... SELECT COLNAME, TYPENAME FROM SYSCAT.COLUMNS WHERE TABNAME=
... DECLARE RES CURSOR WITH RETURN TO CALLER FOR SELECT R.TEXT F
... SELECT PREP_TIME_WORST, NUM_COMPILATIONS, SUBSTR(STMT_TEXT,
... VALUES (:HV00026 :HI00026 + 1, :HV00024 :HI00024 + 1) IN
... VALUES (:HV00035 :HI00035 + 1, :HV00024 :HI00024 + 1) IN
... VALUES (1) INTO :HV00035 :HI00035
... SELECT TRIGNAME FROM SYSCAT.TRIGGERS WHERE TABNAME='POLICY'
... VALUES (:HV00024 :HI00024 +1, :HV00022 :HI00022 +1) INTO :
... VALUES (1, CARDINALITY(CAST(:HV00040 :HI00040 AS "SYSIBMAD
... CALL SYSPROC.SYSINSTALLOBJECTS('POLICY','V','','')
... SET :HV00017 :HI00017 = RPAD(VARCHAR(:HV00035 :HI00035 ),
... drop event monitor act
... SELECT TABSCHEMA, TABNAME, TYPE, STATUS, TBSPACEID, PROPERTY
... CALL SAVE_EXEC_INFO (CAST(:HV00040 :HI00040 AS "SYSIBMADM"
... SET CURRENT LOCK TIMEOUT 5
... SELECT TABNAME FROM SYSCAT.PERIODS WHERE PERIODNAME = 'SYSTE
... SELECT ARRAY_AGG(P.EXECUTABLE_ID ORDER BY M.IO_WAIT_TIME DES
... SET CURRENT ISOLATION RESET
... CALL monreport.pkgcache()
... SELECT A.SPECIFICNAME FROM SYSCAT.ROUTINES A WHERE (A.FENCED
... SELECT POLICY FROM SYSTOOLS.POLICY WHERE MED='DB2CommonMED'
... VALUES 0
23 record(s) selected.运行工作负载后,用户可以将以下查询与表函数配合使用。
SELECT STATS_FABRICATE_TIME,SYNC_RUNSTATS_TIME
FROM TABLE (SNAP_GET_DYN_SQL('mytestdb', -1))
AS SNAPDB
STATS_FABRICATE_TIME SYNC_RUNSTATS_TIME
---------------------- ------------------
2 12
1 30
对于基于此表函数的视图:
SELECT STATS_FABRICATE_TIME,SYNC_RUNSTATS_TIME
FROM SYSIBMADM.SNAPDYN_SQL
STATS_FABRICATE_TIME SYNC_RUNSTATS_TIME
---------------------- ------------------
5 10
3 20
2 record(s) selected.返回的信息
| 列名 | 数据类型 | 描述或相应的监视元素 |
|---|---|---|
| snapshot_timestamp | TIMESTAMP | 获取快照的日期和时间。 |
| NUM_EXECUTIONS | BIGINT | num_executions - 语句执行次数 |
| num_compilations | BIGINT | num_compilations - 语句编译次数 |
| prep_time_worst | BIGINT | prep_time_worst - 语句最长编译时间 |
| prep_time_best | BIGINT | prep_time_best - 语句最短编译时间 |
| INT_ROWS_DELETED | BIGINT | int_rows_deleted - 删除的内部行数 |
| INT_ROWS_INSERTED | BIGINT | int_rows_inserted - 插入的内部行数 |
| INT_ROWS_UPDATED | BIGINT | int_rows_updated - 更新的内部行数 |
| ROWS_READ | BIGINT | rows_read - 读取行数 |
| ROWS_WRITTEN | BIGINT | rows_written - 写入的行数 |
| stmt_sorts | BIGINT | stmt_sorts - 语句排序数 |
| SORT_OVERFLOWS | BIGINT | sort_overflows - 排序溢出数 |
| TOTAL_SORT_TIME | BIGINT | total_sort_time - 排序总时间 |
| POOL_DATA_L_READS | BIGINT | pool_data_l_reads - 缓冲池数据逻辑读取数 |
| POOL_DATA_P_READS | BIGINT | pool_data_p_reads - 缓冲池数据物理读取数 |
| POOL_TEMP_DATA_L_READS | BIGINT | pool_temp_data_l_reads - 缓冲池临时数据逻辑读取数 |
| POOL_TEMP_DATA_P_READS | BIGINT | pool_temp_data_p_reads - 缓冲池临时数据物理读取数 |
| POOL_INDEX_L_READS | BIGINT | pool_index_l_reads - 缓冲池索引逻辑读取数 |
| POOL_INDEX_P_READS | BIGINT | pool_index_p_reads - 缓冲池索引物理读取数 |
| POOL_TEMP_INDEX_L_READS | BIGINT | pool_temp_index_l_reads - 缓冲池临时索引逻辑读取数 |
| POOL_TEMP_INDEX_P_READS | BIGINT | pool_temp_index_p_reads - 缓冲池临时索引物理读取数 |
| POOL_XDA_L_READS | BIGINT | pool_xda_l_reads - 缓冲池 XDA 数据逻辑读取数 |
| POOL_XDA_P_READS | BIGINT | pool_xda_p_reads - 缓冲池 XDA 数据物理读取数 |
| POOL_TEMP_XDA_L_READS | BIGINT | pool_temp_xda_l_reads - 缓冲池临时 XDA 数据逻辑读取数 |
| POOL_TEMP_XDA_P_READS | BIGINT | pool_temp_xda_p_reads -“缓冲池临时 XDA 数据物理读取数”监视元素 |
| total_exec_time | BIGINT | total_exec_time - 执行语句所耗用的时间 |
| TOTAL_EXEC_TIME_MS | BIGINT | total_exec_time - 执行语句所耗用的时间 |
| total_usr_cpu_time | BIGINT | total_usr_cpu_time-语句的用户 CPU 总数 |
| TOTAL_USR_CPU_TIME_MS | BIGINT | total_usr_cpu_time-语句的用户 CPU 总数 |
| total_sys_cpu_time | BIGINT | total_sys_cpu_time-语句的系统 CPU 总计 |
| TOTAL_SYS_CPU_TIME_MS | BIGINT | total_sys_cpu_time-语句的系统 CPU 总计 |
| STMT_TEXT | CLOB (2 M) | stmt_text - SQL 语句文本 |
| DBPARTITIONNUM | SMALLINT | dbpartitionnum -“数据库分区号”监视元素 |
| STATS_FABRICATE_TIME | BIGINT | 在动态语句的查询编译期间,系统在不进行表或索引扫描的情况下创建所需统计信息所花费的总时间 (以毫秒为单位)。 |
| SYNC_RUNSTATS_TIME | BIGINT | 动态语句的查询编译期间同步统计信息收集活动所花费的总时间 (以毫秒为单位)。 |
| MEMBER | SMALLINT | member -“数据库成员”监视元素 |
| * 要计算此列所基于的监视元素的总耗用时间,必须使用以下公式将以 _S 结束的此监视元素的列中报告的完整秒数与以 _MS 结束的此监视元素的列中报告的小数秒数相加: (monitor-element-name_S × 1,000,000 + monitor-element-name_MS) ÷ 1,000,000。 例如, (ELAPSED_EXEC_TIME_S × 1,000,000 + ELAPSED_EXEC_TIME_MS) ÷ 1,000,000。 | ||
