数据库

DB2 数据库监视的一些基础知识

1. 数据库监视概述

数据库管理员必须对数据库的运行状况进行密切 监视,DB2 提供的系统监视工具的作用:

  • 对数据库的性能和故障进行调整和排除。
  • 调整数据库配置的参数。
  • 提高数据库和应用程序的性能。
  • 更好地理解用户或应用程序的活动状况。

监视DB2数据库的方法有四种:

  • 快照监视 (Snapshot Monitor):查询运行的数据库实例的某一个时刻的状态。
  • 事件监视(Event Monitor):查询一个指定的活动运行状态的信息。
  • 运行状况中心:使用运行状况指示器来判读数据库管理器的健康状态和数据库的性能。
  • 解释工具:解释DB2执行 SQL 语句的途径和步骤。

1.1 快照监视器 (Snapshot Monitor)
  • 快照监视是通过使用快照监视器进行。
  • 一些时间点的视图,说明了DB2当时正在”做什么”。
  • 快照返回的信息是针对某个时刻的累计信息。
  • DBA可以通过CLP、GUI、API等方式可以获取快照。
  • DB2支持多种快照监视器。
  • 需要SYSADM、SYSCTRL、SYSMAINT或SYSMON权限。

快照监视器的开关①:

  • 收集系统监控数据需要额外的处理开销
  • 例如,为了计算 SQL 语句的执行时间,DB2 Database Manager 必须调用操作系统,获取 SQL 语句执行之前和之后的时间戳。此类系统调用的成本高昂。
  • 所消耗的内存量大大增加:DB2 Database Manager 要使用内存来存储为系统监控器所追踪的各监控元素收集的数据。
  • 为帮助最小化与收集系统监控信息相关的开销:可使用一组称为快照监控器开关的开关,控制在捕获快照时收集哪些信息,通过这些快照监控器开关的设置方式来确定所收集的信息类型与数量。

快照监视器的开关②:

快照监视器开关-CLP命令:

通过监视器组开关设置监视器:

GET MONITOR SWITCHS

打开或者关闭某个监视:

UPDATE MONITOR SWITCHSE USING <..> ON|OFF

通过数据库管理器配置参数:

更改缓冲池监视器开关:

快照监视器-获取快照:

获取快照的级别:

  • Database Manager (数据库管理器):捕获活动实例的信息
  • Database (数据库):捕获所有数据库或一个数据库的信息
  • Application (应用程序):捕获所有应用程序或单个应用程序的信息
  • Table Space (表空间):捕获数据库内各个表空间的信息
  • Table (表): 捕获数据库内各个表的信息
  • Lock (锁): 捕获使用数据库的应用程序持有的各种锁的信息

应用程序快照和锁快照例子:

表快照和表空间快照例子:


1.2 事件监视(Event Mointor)
  • 事件监视是通过事件监视器进行
  • 事件监视器用于监视某一具体事件或固定的时间周期内的工作负载
  • 记录运行的具体信息从而对数据库和应用程序进行诊断
  • 需要拥有 SYSADM或 DBADM权限才能创建
  • 在使用之前明确创建
  • 在特定类型的事件或事务发生时被激活

事件监视器可以捕获的事件:

  • 数据库:最后一个应用程序断开连接时,生成一个事件记录。
  • 缓冲池::最后一个应用程序断开连接时,为缓冲池生 成一个事件记录。
  • 表:最后一个应用程序断开连接时,为每个活动表生 成一个事件记录
  • 表空间:最后一个应用程序断开连接时,为每个活动的表空间生成一个事件记录
  • 死锁:当发生死锁事件时,生成一个事件记录
  • 连接:每个应用程序连接或断开数据库时生成一个事件记录
  • 语句:为每个SQL语句生成一个事件记录
  • 事务:每当事务完成时,即事务提交或回滚时,生成一个事件记录

事件类型和所搜集的数据:

创建事件监视器:

创建事件监视器的例子:

  • 捕获所有应用程序级计数器的值,每次应用终止 连接时将数据写入CONN_DATA数据库表中
CREATE EVENT MONITOR CONN_EVENTS FOR CONNECTIONS
WRITE TO TABLE CONN (TABLE CONN_DATA)
  • 为缓冲池和表空间事件捕获监控数据,收集的数据写入文件
CREATE EVENT MONITOR BPTS_EVENTS FOR BUFFERPOOLS, TABLESPACES
WRITE TO FILE '/export/home/BPTS_DATA'

事件监视器的输出:

  • 数据库表:在 CREATE EVENT MONITOR 语句执行时,所有目标表都将自动创建。(若出于某些原因,表创建失败,将生成一个 错误代码,且 CREATE EVENT MONITOR 语句失败。)
  • 外部文件:指定的输出目录必须已经存在,DB2数据库管理器实例的所有者必须能够在事件监控器被激活时对其执行写入操作。
  • 命名管道:指定的命名管道必须已经存在,监控命名管道的应用程序必须正在运行,且在事件监控器激活之前,必须已有一个 打开的管道可进行读取操作。

过滤事件监视器的输出:

  • 创建者可以使用WHERE子句作为过滤器
例子:
◦ CREATE EVENT MONITOR georgepay FOR STATEMENTS
WHERE APPL_NAME = ‘PAYROLL’ AND AUTH_ID = ‘GEORGE’ WRITE TO FILE ‘/monitors/georgepay’
MAXFILES 25
MAXFILESIZE 1024
NONBLOCKED
APPEND
◦ 当GEORGE调用PAYROLL应用程序时捕获
  • WHERE子句可以在三种事件类型时制定
◦ Connection
◦ Statements
◦ Transactions
 

启动和停止事件监视器:

  • 创建事件监控器时,指定 AUTOSTART 选项,监控 器将在包含事件监控器的数据库启动时自动启动
  • 使用 MANUALSTART 选项或未指定任何选项: SET EVENT MONITOR [MonitorName] STATE [MonitorState]
  • MonitorState设置事件监控器的状态
◦ 1,启动事件监视器,将其置于“活动”状态
◦ 0,停止事件监控器,将其置于“非活动”状态
  • SQL 函数 EVENT_MON_STATE 可用于查询事件监控器的当前状态
 SELECT EVENT_MON_STATE('EVENT1') FROM SYSIBM.SYSDUMMY1

通过图形界面创建事件监视器

  • 第一步
  • 第二步
  • 第三步

运行状况中心

  • 快照监控器和事件监控器的工作方式不同,但均为 帮助查明已经 对数据库系统性能造成负面影响的问题领域
  • DB2 8中引入了一种全新的工具,帮助管理员监控 DB2 系统的运行情况
  • 能够在潜在系统健康问题成为影响系统性能的问题 之前,向管理员发出警告
  • 转变了系统健康诊断模型
  • 运行状况中心是服务器端的一个图形工具。使用该 工具的优点在于无须和数据库管理员交互即可持续 监控实例的运行状态。

运行状况中心的工作方式

  • 一种服务器端工具,安静地运行于后台之中
  • 利用了新的监控技术,对性能不会造成显著影响
  • 不需用户干预
  • 使用一些运行状况指示器 来评估实例和数据库性 能的特定方面
  • 测定不同对象状态,将系统状态与预定义阈值相 比较,以确定特定对象是 “健康” 还是 “不良”
  • 存在以下组件的运行状况指示器:
◦ 实例,数据库,表空间存储
◦ 日志,排序,包和编目缓冲区
◦ 工作空间 ,内存,应用程序并发
 

运行状况中心的警告

  • 运行状况中心可生成三种类型的警告
◦ 注意(attention)
◦ 预警(warning)
◦ 警报(alarm)
  • 如果出现警报,采取以下措施之一来报告:
◦ 在 Journal 中记录了警报信息(所有警报信息都会写入
Journal)
◦ 通过电子邮件或寻呼机将警报通知发送给负责系统的人员
◦ 执行一种或几种预配置的活动(例如,运行一个任务)
 

运行状况中心界面

配置运行状况指示器设置

运行状况指示器配置启动板

对象运行状况指示器配置

配置运行状况指示器-报警

配置运行状况指示器-操作


解释工具

  • 将一条SQL语句提交给DB2数据库引擎进行处理时, DB2 优化器会对其加以分析,以生成所谓的访问方案
  • 访问方案包括将用于执行该语句的策略的详细信息
◦ 例如可以说明SQL语句访问了哪些表和索引?
◦ 对多个表的访问顺序是什么?
◦ 程序中有哪些锁请求?
◦ 是否需要排序,何时排序,排序的方法是什么? ◦ 查询语句的每个部分正在使用表的哪些字段等?
  • 解释工具(Explain)通过图形或文本的方式详细说明 SQL语句的每个部分如何执行及何时执行,帮助分析 SQL性能

访问方案和包

为什么要使用解释工具

  • 各种监控器可以获取关于某些 SQL 操作执行的情 况,但不能分析单独的 SQL 语句
  • 要执行此类分析,必须捕获并查看存储于 SQL 语句的访问方案中的信息
  • 为捕获并查看访问方案信息,必须使用解释工具
  • 解释工具,还可用于帮助确定编写不良的语句或数据库中弱点的性能信息
  • 解释数据将帮助用户了解 DB2如何为满足查询而 访问表和索引
  • 解释数据还可用于评估采取的任何性能调优行动

DB2提供的解释工具

  • VisualExplain
◦ GUI 工具,查看为特定 SQL 语句选择的访问方案的图形化表示
◦ 查看用于优化SQL语句的数据库统计数据。
◦ 确定是否使用索引来访问表数据。
◦ 允许进行 “前” “后” 对比,从而查看性能调优的效果。
◦ 获得访问方案执行的各操作的详细信息,包括各操作的预计成本。
  • Explainstable
◦ 首先必须创建一组特殊的表,即解释表,之后才能捕获解释信息
  • db2exfmt
◦ 设计用于直接处理已收集并存储在解释表中的信息
◦ 给定数据库名和其他限定信息,在解释表中查询信息、格式化结果 
◦ 生成一份基于文本的报告,可直接显示在终端上或写入ASCII文件
  • db2expln
◦ 为存储在数据库系统目录中的任何包解释并说明其访问方案
◦ 通常用来获取已选定用于未捕获其解释数据的包的访问方案的信息 
◦ 只能说明最终访问方案的实现,不能提供SQL语句优化方式的信息 
◦ 若使用额外的输入参数,还可用于解释动态SQL语句

可用解释工具的比较

SQL翻译流程

timeron

  • DB2 Optimizer 使用的一种度量单位,用于计量查询 完全执行所需的时间和资源数量
  • 是一种创造出来的度量单位,因此,没有什么公式可以将执行一个查询所需的 timeron 数转换成秒数
  • 是时间、CPU占用率、磁盘I/O和其他一些因素的综 合。由于这些参数的值不断变化,执行一个查询所需的 timeon 数量也是动态的,每次执行都有所不同
  • 可以帮助确定一种查询执行途径是否比另一种更快
  • 执行一个查询所需的timeron数在两次编译之间可能 不同,这是由于 CPU 活动、磁盘活动或数据库使用情况发生了变化。

执行SQL语句并产生访问方案

查询结果和访问方案

图形化的访问方案说明

小结

  • 介绍了数据库监视的目的,以及监视DB2数据库的方法。
  • 讲解了DB2中快照监视器的名称、开关及其数据 库管理器配置参数,详细描述了通过监视器组开关和通过数据库管理器配置参数来设置这些监视器的方法。
  • 介绍了事件监视器可以捕获的几种事件,详细描述了创建事件监视器的操作步骤。
  • 简要介绍了运行状况中心的相关知识。
  • 对解释工具和访问方案进行了详细说明。