首页 > 数据库 >达梦数据库使用内存监控指导

达梦数据库使用内存监控指导

时间:2023-10-04 09:33:04浏览次数:36  
标签:size -- 数据库 内存 SQL SIZE 达梦 1024.0

达梦数据库使用内存监控指导

2.1 如何判断内存池空闲还是紧张
v$mem_pool 可以查看所有内存池的使用信息。当前系统的内存池总大小可以通过以下语句查询,单位是 M:

select name, --内存池名称
is_shared, --是否是共享的
is_overflow, --是否用到了备份池
org_size/1024.0/1024.0, --内存池初始大小
TOTAL_size/1024.0/1024.0, --内存池总大小(包括扩展的)
RESERVED_SIZE/1024.0/1024.0, --当前已分配大小(包括扩展的)
DATA_SIZE/1024.0/1024.0, --实际有效字节
EXTEND_SIZE, --每次扩展多少
TARGET_SIZE, --目标大小
N_EXTEND_NORMAL , --TARGET 范围内累计扩展次数
N_EXTEND_EXCLUSIVE --超过 TARGET 累计扩展次数
from v$mem_pool order by TOTAL_size desc;

注意:
1、N_EXTEND_EXCLUSIVE 如果长期大于 0,说明长期从池外扩展,可能存在内存泄露。需要重点关注。
2、用到备份池的话,需要保持高度关注,此时系统非常危险。
3、内存池创建的线程号 creator 可以与 session 的 thrd_id 关联,查看对应的某个会话的内存使用情况。
4、如果 RESERVED_SIZE 比 org_size 小,说明内存池非常空闲,需要把对于的初始内存放小,否则浪费。
5、如果 TOTAL_size 比 TARGET_SIZE 大,说明内存池不够,经常向池外申请,需要把对于的参数调大。尽量保持每个池自持。


2.2 如何判断 BUFFER 空闲还是紧张
select name, --缓冲区名称
n_pages, --页数
free, --空闲页数目
N_DISCARD64 --淘汰的页数
from v$bufferpool
注意重点:
1、如果 free 很多说明该缓冲区很空闲,可以适当的调整降低 buffer 缓冲区参数值。
2、如果 free 项为 0,或者 N_DISCARD64 非零,表示该缓冲区经常淘汰。这种情况,就说明对应的缓冲区
参数太小,导致频繁淘汰,需要调整对应的缓冲区的参数。


2.3 达梦内存总量
达梦数据库使用的内存大致等于 BUFFER + MPOOL,对应的 SQL 语句为:
select
(select sum(n_pages * page_size)/1024/1024 from v$bufferpool)||'MB' as BUFFER_SIZE, ( select sum(total_size)/1024/1024 from v$mem_pool)||'MB' as mem_pool, (select sum(n_pages * page_size)/1024/1024 from v$bufferpool)+(select sum(total_size)/1024/1024 from
v$mem_pool)||'MB' as TOTAL_SIZE
From dual;


2.4 使用内存最多的 sql
V$SQL_STAT 需 要 ENABLE_MONITOR=1 才 开 始 监 控 。 其 中 5~58 列 中 的 监 控 项 , 可 以 通 过
SP_SET_SQL_STAT_THRESHOLD()设置监控阀值,超过阀值才开始监控。

例如:监控 sql 执行在 1 秒以上的 SQL 语句使用的内存
SELECT "SESSID", MAX_MEM_USED||'KB',SQL_TXT FROM V$SQL_STAT order by MAX_MEM_USED DESC;
通过此 SQL 语句确定使用内存较大的 SQL,进行针对性的优化,如消除 HASH,SORT,DISTINCT 等操作。该查
询只能查询当前活动 STMT 上的语句消耗情况,历史情况需要查询 V$SQL_STAT_HISTORY ,该视图上保留 1W 行 SQLSTAT 历史信息.


2.5 单个会话内存使用总量
SELECT
A.CREATOR , B.SQL_TEXT ,
11
SUM(A.TOTAL_SIZE)/1024.0/1024.0 TOTAL_M, --当前总量(包括扩展)
SUM(A.DATA_SIZE) /1024.0/1024.0 DATA_SIZE_M --实际使用量
FROM
V$MEM_POOL A, V$SESSIONS B
WHERE
A.CREATOR = B.THRD_ID
GROUP BY
A.CREATOR, B.SQL_TEXT
ORDER BY
TOTAL_M DESC;


2.6 内存增长监控
--打开内存泄露检查参数 MEMORY_LEAK_CHECK
alter system set 'MEMORY_LEAK_CHECK'=1 ; --执行查询
select * from V$MEM_REGINFO ORDER BY REFNUM DESC
如果看到 REFNUM 值特别的大,一直不会变小,说明该内存存在堆积,需要具体的分析。其中 fname 指定
了该内存池的内存来自哪个文件,lineno 指定是在该文件哪一行。


2.7 通过 v$sysstat 视图监控内存的使用情况
select name ,stat_val/1024.0/1024.0 from v$sysstat where CLASSID=11 ;
其中:
memory pool size in bytes: 内存池总的大小
memory used bytes: 内存池使用的内存大小
memory used bytes from os: 内存池从操作系统分配的大小

标签:size,--,数据库,内存,SQL,SIZE,达梦,1024.0
From: https://www.cnblogs.com/feiyun8616/p/17741963.html

相关文章

  • Java JDBC连接数据库的CURD操作(JDK1.8 + MySQL8.0.33 + mysql-connector-java-8.0.27-
    JDBC概述JDBC(JavaDatabaseConnectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这些类库可以以一种标准的方法、方便地访问数据库资源。JDBC为访问不同的数据库提供了一......
  • MYSQL数据库基础
    目录1.数据库概念1.1数据库是干嘛的?1.2数据库和数据结构是啥关系?​1.3两种类型的数据库2.MySQL数据库2.1MySQL数据库概念2.2MySQL基本操作 2.2.1建立数据库 2.2.2查看数据库 2.2.3选中数据库 2.2.4删除数据库2.3MySQL数据类型1.数据库概念1.......
  • 如何备份和恢复数据库
    目录1.xtrabackup是什么2.全量备份3.增量备份4.使用备份进行恢复5.原理6.参考本文主要介绍如何使用xtrabackup进行数据库的备份和恢复,并在最后介绍了原理。1.xtrabackup是什么XtraBackup是由Percona开发的一款开源的MySQL数据库备份工具。它可以对InnoDB和XtraDB存储引擎的......
  • VMWare 虚拟机 CPU 设置里针对 CPU 的虚拟化 IOMMU(IO 内存管理单元) 选项功能介绍
    虚拟化技术在现代计算中扮演着关键角色,使多个虚拟机(VM)能够在单个物理主机上同时运行。VMware作为虚拟化技术的领导者之一,提供了许多高级设置选项,其中之一是“虚拟化IOMMU(IO内存管理单元)(I)”选项。在本文中,我将详细介绍这个选项的作用,并提供示例来说明其实际应用。1.虚拟化......
  • SqlServer数据库分页查询问题排查
    使用docker安装下载镜像dockersearchmssql-serverdockerpulldatagrip/mssql-server-linux创建容器dockerrun-d--namesqlserver-p1433:1433-e'ACCEPT_EULA=Y'-e'SA_PASSWORD=szz123456'datagrip/mssql-server-linuxACCEPT_EULA需要设置为Y以接受SQL......
  • 1449元起 美商海盗船统治者泰坦DDR5内存上架:6000-7200MHz可选
    美商海盗船(Corsair)推出了统治者泰坦DDR5内存,频率可选6000-7200MHz,首发1449元起。据介绍,统治者泰坦DDR5内存有着简洁、优雅的造型,采用了锻造铝结构,并得到美商海盗船荣获专利的DHX散热技术的支持,提升了超频潜力。同时,内存顶部的LED灯条有着11颗可单独寻址的RGBLED灯,通过iCUEMur......
  • Linux 内存泄漏检测的基本原理
    一、mtrace分析内存泄露mtrace(memorytrace),是GNUGlibc自带的内存问题检测工具,它可以用来协助定位内存泄露问题。它的实现源码在glibc源码的malloc目录下,其基本设计原理为设计一个函数voidmtrace(),函数对libc库中的malloc/free等函数的调用进行追踪,由此来检测内存是否存在......
  • C++类内存分布+ Studio工具
    书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。工欲善其事,必先利其器,我们先用好VisualStudio工具,像下面这样一步一步来:  先选择左侧的C/C++->命令行,然后在其他选项这里写上......
  • openGauss学习笔记-87 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-M
    openGauss学习笔记-87openGauss数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用简单概述使用MOT非常简单,以下几个小节将会进行描述。openGauss允许应用程序使用MOT和基于标准磁盘的表。MOT适用于最活跃、高竞争和对吞吐量敏感的应用程序表,也可用于所有应用程序的表。......
  • SQLite学习笔记——创建数据库和SELECT,INSERT语句
    SQLite创建数据库我们可以直接使用sqlite3DatabaseName.db来创建数据库,这时候我们就会发现同一目录下出现了对应的.db文件或者我们可以先启动sqlite3然后在里面使用点命令.openDatabaseName.db来创建数据库,如果已经存在对应的数据库,那么我们默认就会打开该数据库。......