#数据库性能分析

# 性能报告分析

YashanDB提供给用户的性能报告主要包含以下内容:

  • 数据库信息
  • 服务器信息
  • 快照信息
  • 负载信息
  • TOP10等待事件
  • wait class信息
  • 按照执行时间、CPU时间、I/O等待时间、执行次数、解析次数等排序的SQL信息

用户可以从以下方面对上述内容进行分析:

  • 查找慢SQL:当系统执行SQL较慢时,可以查看SQL order by Elapsed Time,查看最耗时SQL。
  • 查找两次快照间的时间损耗:通过查找TOP10等待时间,可以查看各事件花费时间。
  • 查找快照间内存以及IO等的读写大小:通过查找负载信息,可以看到对应信息。
  • 查看SQL复用率:查找负载信息"parses(SQL)"跟"Hard parses(SQL)",差值越大,复用率越高,效率也就越高。

# 统计项分析

用户可以根据YashanDB提供的各项性能指标统计项分析系统存在的性能瓶颈,另外,可以在调优后通过观察统计项的变化验证调优操作是否有效。

在YashanDB中,每个统计项反映的是具体某个组件的一项指标,对指标的细化有助于用户判断性能问题的根因,因为通常情况下,某个性能问题对外的表现极大可能是多个统计指标出现异常。

以常见的IO问题为例,系统IO负载增大通常情况下是由于业务压力升高或后台线程工作所致,可以通过观察不同统计项的变化来识别相应的问题,从而进行针对性的优化:

  • 如果发现DISK READS以及DISK READ TIME增长很快,说明数据库正在频繁地读数据块。引起这种现象的主要原因是业务短时间访问了大量的数据,或DATA_BUFFER_SIZE太小导致缓存区发生频繁地淘汰。可以尝试通过增大DATA_BUFFER_SIZE,或优化不必要的数据扫描(例如将全表扫描优化为索引扫描),从而降低IO压力。
  • 如果发现VM SWAP OUT增长很快,说明数据库正在产生大量的计算中间结果(例如排序操作),而配置的VM_BUFFER_SIZE较小,导致了频繁地换入换出。可以尝试通过增大VM_BUFFER_SIZE来缓解。
  • 如果发现CHECKPOINTS COMPLETED增长很快,这是数据库后台清理脏块带来的IO增长,通常情况下不会对业务产生影响。
  • 如果发现REDO SYNCH WRITE增长很快,说明业务此时事务提交的频率很高,redo日志刷盘带来了IO的增长,属于正常的现象。但如果发现此种情况导致IO负载过高而且业务性能出现明显下降,则需要分析是否存储介质的性能出现了瓶颈。

关于YashanDB中所有统计项的具体描述信息请查阅参考手册统计信息章节。

pdf-btn 下载文档
copy-btn 复制链接