注册
系统上线第二步 | 达梦怎么快速找出来需要建立索引的语句?(上线前的必做工作!)

系统上线第二步 | 达梦怎么快速找出来需要建立索引的语句?(上线前的必做工作!)

hql 2021/10/24 4057 8 3
摘要 不告诉怎么建索引,还不能告诉我怎么找到需要建立索引的语句吗?其实是比较简单的。

任何一个系统如果没有进行过这个分析步骤,怎敢上线?!


那么,我们如何分析哪些语句有问题,需要建立或者调整索引呢?

很简单:

都是有工具的,可以通过下载达梦的sql日志分析工具,进行深入分析:

达梦sql日志文件分析工具

达梦sql日志文件分析工具使用指南

有这个工具就可以了吗?当然不可以。我们还需要借助数据库的一个特性,叫做SQL日志记录功能


整体的操作步骤如下:

1. 找到数据库单机或者集群的sqllog.ini(该文件,在数据库服务器的实例数据文件夹下)

ps -ef|grep dmserver 可以看到实例的进程,和dm.ini的绝对路径。sqllog.ini就和dm.ini在同一个路径下。

2. 编辑sqllog.ini

我们一般用这个配置:

[dmdba@dbserver1 log]$ cat /data/XXX_DATA/DAMENG/sqllog.ini
BUF_TOTAL_SIZE          = 10240         #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE                = 1024          #SQLs Log Buffer Size(K)(50~409600)
BUF_KEEP_CNT            = 6             #SQLs Log buffer keeped count(1~100)

[SLOG_ALL]
	FILE_PATH    = ../log
	PART_STOR    = 0
	SWITCH_MODE  = 3
	SWITCH_LIMIT   = 720
	FILE_NUM   = 40
	ASYNC_FLUSH   = 1
	ITEMS      = 0 
	SQL_TRACE_MASK  = 2:3:9:25
	MIN_EXEC_TIME = 50
	USER_MODE   = 0 
	USERS =

注意1:

SWITCH_MODE  = 3
SWITCH_LIMIT   = 720
FILE_NUM   = 40

这三个参数是可以调整的,也可以使用下面组合

SWITCH_MODE  = 2
SWITCH_LIMIT   = 512
FILE_NUM   = 4

第一组表示按照时间切换sql日志文件,720分钟切换一次,保留40个文件;
第二组表示按照文件大小切换sql日志文件,512MB切换一次,保留4个文件;

注意2:

  1. ASYNC_FLUSH = 1,必须保持为1,不能设置为0.
  2. MIN_EXEC_TIME = 50,可以按需调整,这里表示sql日志文件,只留超过50毫秒的sql。(注意,该参数不要设置为0

3. 在数据上执行下面两个sql,生效配置的sqllog.ini

sp_set_para_value(1,‘SVR_LOG’,0);
sp_set_para_value(1,‘SVR_LOG’,1);

4. 生产运行

这期间,我们可能是进行压力测试啊;可能是生产运行了半天或者一天。

sql日志记录在数据库安装目录的log文件夹下,文件以dmsql开头,以.log结尾。

生成的SQL文件里面,就记录了什么时间、哪个IP地址、哪个用户、执行了什么SQL、执行时间是多久

5. 使用文章开头的工具进行分析SQL文件

下载文章开头的文件之后,解压到一个文件夹(注意:这个文件夹下的所有文件,都不能删除;且运行jar包,必须在当前目录下执行!)。

把第四步的sql日志文件放到文件夹的log中,并在当前目录打开cmd工具或者bash命令(也就是在当前目录下,不管是windows还是linux,操作方式都一样)

运行:java -jar Dmlog_DM_8.3.1.jar 即可

注意:该运行工具,需要连上一个数据库才能进行分析,连接信息在解压后的当前目录下的dmlog.properties里配置。
配置下面几个信息即可:

#数据库IP地址
ip=127.0.0.1

#数据库端口号
port=5236

#数据库用户名
username=SYSDBA

#数据库密码
password=SYSDBA

运行完毕后,会在当前目录下生成一个RESULT_时间戳的文件夹:

文件1、文件2、文件3 是我们经常需要查看的文件。

image.png

  1. 文件1里面是数据库这段时间的所有SQL的耗时点图。对于我们了解系统运行非常重要。横轴是时间,纵轴是执行时间(单位是ms)效果如下:
    image.png
    注意:天花板很明显,说明这个系统问题很大(效率很差)。

  2. 文件2是文件1的细化,通过浏览器打开后,可以直接在浏览器查看每一个点的具体sql语句。格式是echart的,可以通过右上角的放大按钮,缩放自己选择的指定区域(在某些区域点非常密时,非常有效)。

  3. 文件3,就是我们具体SQL的和执行耗时的EXCLE汇总结果。


通过这个完整的步骤,我们就知道哪些SQL需要调整或者补齐索引了!注意:任何一个系统,如果没有进行过这种测试(压测后的性能分析),绝对不可以上线!

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服