类别 | 选项 | 使用方法 |
---|
表和文件提示 | Eventtype | CREATE EVENT MONITOR emon1 FOR STATEMENTS |
STATEMENTS 监视器是最大的性能威胁。如果关注性能,那么就应该将 STATEMENTS 监视器与其他监视器分离开来,使其自成一体。 |
Buffersize | CREATE EVENT MONITOR emon1 FOR CONNECTIONS WRITE TO TABLE BUFFERSIZE 8 |
为了减少表插入或者文件写入操作的开销,事件记录首先将写入一个缓冲区空间。在缓冲区空间充满时,事件记录随之移入事件表或文件。出于性能方面的原因,高度活跃的事件监视器应比相对来说活跃度较低的监视器具有更大的缓冲区。BUFFERSIZE 表示缓冲区空间的容量(以 4K 页面为单位)。由于空间是从数据库监视器堆中分配的,因此所有事件监视器的合并容量不应超过最大大小(使用 db2 get dbm cfg | grep MON_HEAP_SZ 来确定这个值)。 |
Blocked/Nonblocked | CREATE EVENT MONITOR emon1 FOR CONNECTIONS WRITE TO TABLE BLOCKED/NONBLOCKED |
如果设置了 BLOCKED,则在事件记录从缓冲区空间移动到表/文件时(即缓冲区空间已满时),生成事件的每个代理都会等待移动完成。通过这样的方式即可保证不丢失任何事件数据。然而,这种方式也会降低数据库性能。因此,在关注性能时,事件监视器应设置为 NONBLOCKED。此时将会存在数据丢失的现象,但对数据库性能的影响可降低到最低限度。 |
特定于表的提示 | 逻辑数据组监视器元素 | CREATE EVENT MONITOR emon1 FOR DEADLOCKS WITH DETAILS WRITE TO TABLE DLCONN (EXCLUDES(agent_id, lock_wait_start_time)), DLLOCK (INCLUDES(lock_mode, table_name)) |
每个事件监视器都使用多个数据库表来存储所收集到的数据。举例来说,STATEMENTS 事件监视器收集语句数据并将其存储在表中:CONNHEADER、STMT、SUBSECTION 和 CONTROL。通过避免收集不必要的事件表和字段,对性能的影响即可降低到最低限度。 |
表空间 | CREATE EVENT MONITOR emon1 FOR CONNECTIONS WRITE TO TABLE CONN (TABLE conns, IN mytablespace) |
在磁盘忙成为性能瓶颈问题时,应将事件表放置在独立的表空间和独立的磁盘中,以便使磁盘写入操作更加平均地分布。 |
PCTDEACTIVATE | CREATE EVENT MONITOR emon1 FOR CONNECTIONS WRITE TO TABLE CONN PCTDEACTIVATE 90 |
PCTDEACTIVATE 选项用于控制事件监视器的存储占用。它定义为一个百分比数字。举例来说,如果 PCTDEACTIVATE 设置为 90,在事件表所在的表空间的占用容量达到 90% 时,事件监视器将自动禁用。这个选项仅可用于数据库托管表空间(DMS)。 |
特定于文件的提示 | Maxfiles/Maxfilesize | EVENT MONITOR emon1 FOR CONNECTIONS WRITE TO FILE myfile MAXFILES 10 MAXFILESIZE 32 |
与 PCTDEACTIVATE 选项相似,MAXFILES 和 MAXFILESIZE 可共同用于控制事件监视器有权使用多少存储空间。MAXFILESZIE 定义单独一个事件监视器文件可以包含的 4K 页面的数量。在达到最大数量时,即创建一个新文件来存储传入的事件数据。这种处理方式将一直继续到文件数量达到预先定义的 MAXFILES 值,此时事件监视器将被自动禁用。 |