本篇博客向各位同学分享下达梦数据库中的相关性能方面的话题。首先,我们对性能问题应该有个完整的认识。数据库的运行是在主机系统、存储环境、计算单元、网络等一系列单元的共同配合下完成的,因此,在分析和处理问题的时候,应该有一个全局观。这里面,从性能角度来讲,应该关注的就包括有:数据库运行参数相关配置的正确性和结合硬件运行环境做调整,如CPU和数据库并行线程等信息的调整;操作系统层面的,如文件打开数,IO调度、虚拟内存以及最大线程数等;以及数据库监控层面的如慢sql日志记录与入库分析、数据库等待事件结合操作系统的相关监控记录进行综合分析判断等。以上情况,对我们的日常维护工作和性能分析工作有着巨大的帮助,可以从全局角度去定位和分析性能问题。在解决问题这个层面上,无论是改结构还是调SQL,需要结合实际客户业务场景来做分析决定。通常情况下,高频SQL是我们解决问题过程中需要重点关注解决的对象。
在解决问题的过程中,达梦数据库也为我们提供了很多优秀的解决方案和工具,如ET和达梦awr 报告等等,都有助于我们去分析和解决问题,也是我们日常工作中需要去掌握的。除此以外,在OS层面的相关性能工具和监控工具,也可以有效帮助我们去处理问题。
在达梦数据库中,DBA还可以通过查看系统日志来辅助分析问题。数据库运行过程中,会将一些关键信息记录到安装目录下一级log目录下的名称为dm_实例名_YYYYMM.log的系统日志文件中,其中YYYY表示年份,MM表示月份。例如,dm_DMSERVER_202206.log。该文件会记录下数据库服务启动/关闭的时间、系统关键错误如打开文件失败等。
一、启用SQL日志来辅助分析性能问题
在达梦数据库中,DBA可以通过查看系统SQL日志来辅助分析SQL性能问题。
将DM数据库配置文件中的参数SVR_LOG设置为打开,系统会在安装的log目录下生成名为dmsql_实例名_日期_时间.log的SQL日志文件。在该文件中记录了启用SVR_LOG之后数据库接收到的所有SQL语句等信息,DBA可以通过分析该文件来帮助解决问题。
1.1开启SQL日志:
SP_SET_PARA_VALUE(1, 'SVR_LOG', 1);
1.2根据实际情况需要,修改sqllog.ini来满足需要。
重点关注信息:记录执行时间超过200ms的语句;生产环境必须设置为异步日志;设置SQL过滤规则,只记录必要的SQL等。
以下是 sqllog.ini 参数文件的配置参考。
关闭SQL日志:SP_SET_PARA_VALUE(1, 'SVR_LOG', 0);
通过SQL日志,可以对关注的性能问题SQL进行汇总分析,找出可能的问题所在。
二、分析当前等待事件
当一个进程连接到数据库后, 进程所经历的种种等待就开始被记录, 并且通过一系列的性能视图进行展示, 通过等待事件用户可以很快发现数据库的性能瓶颈, 从而进行针对性能的优化和分析。结合操作系统的监控信息记录以及数据库层面的等待事件来发现运行瓶颈,是我们需要关注的重点之一。
达梦数据库中的动态性能视图能自动收集数据库中的一些活动信息,日常工作上根据这些信息可以了解数据库运行的基本情况,为数据库的维护和优化提供依据。动态视图信息是随着数据库的运行随时更改,具有一定的即时性。与 数据库事件相关的 视图主要有以下几个:
V$WAIT_HISTORY 通过该视图可以查询等待事件的具体信息,如等待的线程id,会话id等。可以查看具体等待事件的信息,如果某个事务等待时间过长,则可以查询到具体事务信息以及所在的线程和所牵涉的对象,分析原因进行优化等操作。
V$EVENT_NAME 显示当前系统所支持的等待事件的类型汇总信息。
V$SYSTEM_EVENT 显示自系统启动以来所有等待事件的详细信息。
V$SESSION_EVENT 显示当前会话等待事件的所有信息。
V$SESSION_WAIT_HISTORY 显示会话等待事件的历史信息。
V$DANGER_EVENT 数据库重要事件和行为信息视图。
V$TASK_QUEUE 任务队列信息。
V$TRACE_QUEUE 事件跟踪任务队列信息。
整体上,归纳起来有如下几个大类:
2.1 与IO相关的有10类事件
2.2 与并发相关的是26类
2.3 其他方面的事件有11类
下面是对等待事件的类型做一个补充说明:
dbfile read:读用户数据文件