news 2026/6/15 15:36:42

运维系列数据库系列【仅供参考】:达梦数据库大内存SQL定位和监控

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
运维系列数据库系列【仅供参考】:达梦数据库大内存SQL定位和监控

达梦数据库大内存SQL定位和监控

  • 达梦数据库大内存SQL定位和监控




达梦数据库大内存SQL定位和监控

在日常数据库运维中,我们常遇到数据库实例占用较大内存的情况,此类情况多为有会话SQL使用了较大内存导致,本文将介绍如何监控和查找此类SQL语句。

达梦数据库内存占用可以简单的分为缓冲区和内存池,分别提供系统视图VBUFFERPOOL和VBUFFERPOOL和VBUFFERPOOL和VMEM_POOL进行监控。

缓冲区

缓冲区包括数据缓冲区、日志缓冲区、字典缓冲区和SQL缓冲区。数据缓冲区是数据页写入磁盘之前以及从磁盘上读取数据页之后,数据页所存储的地方,分为四种类别,分别为:BUFFER、RECYCLE、FAST 、KEEP;

类别 用途 淘汰机制

对应INI参数

BUFFER

默认缓冲区,普通数据页

正常淘汰

BUFFER,MAX_BUFFER

RECYCLE

临时表数据页

正常淘汰

RECYCLE

FAST

数据页、回滚页

常驻缓冲区

FAST_POOL_PAGES

KEEP

普通数据页

很少淘汰

KEEP

日志缓冲区用于存放重做日志的内存缓冲区,由参数RLOG_BUF_SIZE进行控制;

字典缓冲区主要用于存储一些数据字典信息,由参数DICT_BUF_SIZE控制,如果对分区数较多的水平分区表进行访问,需要调大该参数值;

SQL缓冲区主要存储包,执行计划,结果集缓存等信息,对应参数为CACHE_POOL_SIZE,缓冲区使用不会超过INI配置大小。

GAN HUO

内存池

DM的内存池包括共享内存池和一些运行时内存池。
共享内存池:是 DM Server 在启动时从操作系统申请一大片内存供系统运行时使用,避免运行期间频繁的进行系统调用降低系统运行效率,提供参数MEMORY_POOL设置大小和MEMORY_TARGET参数设置上限;

运行时内存池:为DM 的一些功能模块在运行时使用的自己运行时内存池,这些运行时内存池是从操作系统申请一片内存作为本功能模块的内存池来使用,如会话内存池、虚拟机内存池等。

GAN HUO

查看内存池情况

下面举例进行介绍一个会话使用的内存池情况,我们使用DISQL工具连接数据库,查看此会话内存池情况,SQL语句:

SELECT A.CREATOR,B.SQL_TEXT,A.NAME,A.TOTAL_SIZE/1024/1024TOTAL_M,A.DATA_SIZE/1024/1024DATA_SIZE_M FROM V$MEM_POOL A,V$SESSIONS B WHERE A.CREATOR=B.THRD_ID AND B.APPNAME='DIsql.exe';

通过执行结果我们可以发现,每创建一个会话系统就会产生一个SESSION运行池,下面使用DISQL执行一个语句查询结果:

可以发现在执行语句后此会话多了一个VM池,会话执行过程中根据会话类型还会生成其他内存池,但会话创建线程号固定,所以我们可以使用如下SQL获取会话执行时总使用内存:

SELECT A.CREATOR,B.SQL_TEXT,SUM(A.TOTAL_SIZE)/1024/1024TOTAL_M,SUM(A.DATA_SIZE)/1024/1024DATA_SIZE_M FROM V$MEM_POOL A,V$SESSIONS B WHERE A.CREATOR=B.THRD_ID AND B.APPNAME='DIsql.exe'GROUP BY A.CREATOR,B.SQL_TEXT ORDER BY TOTAL_M DESC;

下面我们使用DISQL工具执行一个两个大表的HASH连接语句,然后查看内存使用情况,语句计划如下:


执行过程中内存使用情况:

可以看出此会话在执行过程中一共使用了116M内存,如果此类SQL语句并发过多,数据库实例占用内存会非常大。

上面介绍了SQL运行过程中我们怎样去查看会话使用内存大小,但是如果SQL已经执行结束,我们怎样去定位SQL使用内存情况呢?

达梦数据库提供了VSQLSTAT和VSQL_STAT和VSQL
S

TAT和VSQL_STAT_HISTORY系统视图对语句级资源监控,需要调整参数ENABLE_MONITOR=1,才开始监控。VSQLSTAT视图提供监控项生成的条件阀值,SPSETSQLSTATTHRESHOLD()设置监控阀值,超过阀值才开始监控;VSQL_STAT视图提供监控项生成的条件阀值,SP_SET_SQL_STAT_THRESHOLD()设置监控阀值,超过阀值才开始监控; VSQL
S

TAT视图提供监控项生成的条件阀值,SP
S

ET
S

QL
S

TAT
T

HRESHOLD()设置监控阀值,超过阀值才开始监控;VSQL_STAT_HISTORY视图单机最大行数为 10000。我们可以根据此视图对正在执行的语句和执行后的语句进行监控,可以使用下面的语句找出使用大内存的SQL:

SELECT SF_GET_SESSION_SQL(SESSID),MAX_MEM_USED,SQL_TXT FROM VSQLSTATORDERBYMAXMEMUSEDDESC;达梦数据库还提供了VSQL_STAT ORDER BY MAX_MEM_USED DESC; 达梦数据库还提供了VSQL
S

TATORDERBYMAX
M

EM
U

SEDDESC;达梦数据库还提供了VLARGE_MEM_SQLS和VSYSTEMLARGEMEMSQLS视图对大内存sql语句进行监控,通过INI参数LARGEMEMTHRESHOLD进行设置阈值,一条sql语句使用的内存值超过此参数配置,就会记录到VSYSTEM_LARGE_MEM_SQLS视图对大内存sql语句进行监控,通过INI参数LARGE_MEM_THRESHOLD进行设置阈值,一条sql语句使用的内存值超过此参数配置,就会记录到VSYSTEM
L

ARGE
M

EM
S

QLS视图对大内存sql语句进行监控,通过INI参数LARGE
M

EM
T

HRESHOLD进行设置阈值,一条sql语句使用的内存值超过此参数配置,就会记录到VLARGE_MEM_SQLS中,此视图保留最近的1000条sql语句,通过如下语句可以对大内存sql进行排序:

SELECT * FROM VLARGEMEMSQLSORDERBYMEMUSEDBYKDESC;VLARGE_MEM_SQLS ORDER BY MEM_USED_BY_K DESC; VLARGE
M

EM
S

QLSORDERBYMEM
U

SED
B

Y
K

DESC;VSYSTEM_LARGE_MEM_SQLS视图则存放的是系统中使用内存最多的 20 条 sql 语句。

总结

通过上面的介绍,日常中我们可以通过实时查询VMEMPOOL和VMEM_POOL和VMEM
P

OOL和VSQL_STAT统计正在执行的SQL使用内存大小,也可以通过视图VSQLSTATHISTORY和VSQL_STAT_HISTORY和VSQL
S

TAT
H

ISTORY和VLARGE_MEM_SQLS等进行数据库系统运行过程中的大内存SQL进行监控和排查;在定位到具体SQL语句后我们可以在测试环境进行重现,实时的捕获其用到的内存情况,最后可以通过对SQL进行针对优化,消除HASH、排序等操作来减少SQL的内存使用。







yangeoooo

达梦数据库大内存SQL定位和监控

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 14:07:37

AutoGPT镜像合作伙伴招募:共建AI自动化生态

AutoGPT镜像合作伙伴招募:共建AI自动化生态 在人工智能从“能说”走向“会做”的关键转折点,一种新型的自主智能体正悄然改变人机协作的边界。传统聊天机器人依赖用户一步步发号施令,而如今,只需一句“帮我写一份新能源行业的投资…

作者头像 李华
网站建设 2026/6/15 14:09:39

论文研究内容怎么写?最强技巧让导师直接点头通过

作为一位专业的学术写作指导者,我深知在论文写作中,最让研究生和科研人员感到迷茫和焦虑的环节,莫过于 “研究内容” 的撰写。它承上启下,既要体现你清晰的研究思路,又要展示你扎实的学术功底。一份出色的研究内容描述…

作者头像 李华
网站建设 2026/6/14 20:12:47

Ubuntu20.04安装Miniconda并配置GPU版PyTorch全流程

Ubuntu 20.04 搭建深度学习环境:Miniconda GPU 版 PyTorch 实战指南 在如今的AI开发中,一个稳定、可复现且性能强劲的环境几乎决定了项目成败。你有没有遇到过这样的场景?刚从同事那里拿到一份能跑通的代码,在自己机器上却因为“…

作者头像 李华
网站建设 2026/6/15 6:33:16

LobeChat能否实现多轮对话上下文记忆优化?

LobeChat 的多轮对话上下文记忆优化能力深度解析 在如今 AI 聊天应用遍地开花的时代,用户早已不满足于“问一句答一句”的机械交互。真正智能的体验,是系统能记住你上一句话说了什么、前一轮讨论的主题是什么,甚至能基于之前的决策继续推进任…

作者头像 李华
网站建设 2026/6/15 4:22:21

【江鸟中原】HarmonyOS ArkTS 课程表 App 开发实战

一、项目简介 本项目基于 HarmonyOS 最新开发框架 ArkTS,使用 DevEco Studio 开发一款轻量级但功能完整的课程表应用(ScheduleAPP)。该应用支持用户查看每日课程安排、添加/编辑课程信息、切换周视图等功能,适用于大学或中学师生…

作者头像 李华
网站建设 2026/6/12 14:04:01

21、DOS系统使用指南

DOS系统使用指南 1. DOS系统简介 大多数现代个人计算机(PC)要么运行DOS系统,要么可以访问其模拟版本。在微软Windows 3.1及之前的所有Windows版本,都需要先运行DOS系统才能启动Windows。而Windows 95和Windows NT本身就是完整的操作系统,它们可以显示DOS的模拟版本。 2…

作者头像 李华