达梦慢sql和统计信息收集

更多技术博客,请关注微信公众号:运维之美

一、引子

网站运行久了,web页面加载出现转圈和加载慢的情况,通过查看日志是慢SQL导致的,如果你对国产的达梦数据库不是很熟悉,那么怎么定位呢?

  • 根因分析

数据库出现慢sql的原因基本上有如下几点

  1. 数据库节点资源不足,负载高导致的慢

  2. web节点和数据库节点网络有延迟

  3. SQL语句没有索引,当网站运行数据量越来越大后出现慢sql

  4. 数据库统计信息太旧了,导致SQL运行没走索引

本章主要讲达梦数据库在第4种情况下的问题处理,达梦数据库可以兼容oracle,所以运维过oracle的小伙伴,达梦就比较简单了。

二、问题分析

查询超过执行时间阈值的 SQL 语句

可通过查询 V$LONG_EXEC_SQLS 系统视图获取结果:

SELECT * FROM V$LONG_EXEC_SQLS;

查询结果字段详细信息介绍如下表所示:

列名 说明
SESS_ID 会话 ID,会话唯一标识
SQL_ID 语句 ID,语句唯一标识
SQL_TEXT SQL 文本
EXEC_TIME 执行时间(毫秒)
FINISH_TIME 执行结束时间
N_RUNS 执行次数
SEQNO 编号
TRX_ID 事务号

三、了解执行计划

数据库会按照SQL接方式、连接顺序、访问路径生成不同的执行计划,选择代价最小的一个作为最终的执行计划。

一般情况下,索引访问用于检索表的小部分数据,全表扫描用于访问表的大部分数据。从数据库中定位和检索数据的方法有:全表扫描、聚集索引扫描、二级索引扫描等。

全表扫描是指从基表中检索数据时,扫描该表中所有的数据。全表扫描方式适合检索表中大部分数据,这时比索引扫描更加有效率。

索引扫描是指通过指定语句中的索引列进行遍历来检索表中的数据。索引扫描是从基于一列或多列的索引中检索数据。索引不仅包含索引值,还包含对应表中数据的 ROWID。如果需要访问的不是索引列,这时需要通过 ROWID 或聚集索引来找到表中的数据行。

达梦数据库可通过两种方式查看执行计划。

方式一:通过 DM 数据库配套管理工具查看。

方式二:使用 explain 命令查看。

以下对两种查看方式进行介绍。

(1)管理工具查看执行计划

在 DM 配套管理工具中,选中待查看执行计划的 SQL 语句,点击工具栏中的按钮,或使用快捷键 F9,即可查看执行计划。</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维之美@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值