阿里云服务器建立网站免费网络推广方法
2026/5/21 19:03:22 网站建设 项目流程
阿里云服务器建立网站,免费网络推广方法,wordpress留言群发,intitle 郑州网站建设达梦数据库大内存SQL定位和监控达梦数据库大内存SQL定位和监控达梦数据库大内存SQL定位和监控 在日常数据库运维中#xff0c;我们常遇到数据库实例占用较大内存的情况#xff0c;此类情况多为有会话SQL使用了较大内存导致#xff0c;本文将介绍如何监控和查找此类SQL语句。…达梦数据库大内存SQL定位和监控达梦数据库大内存SQL定位和监控达梦数据库大内存SQL定位和监控在日常数据库运维中我们常遇到数据库实例占用较大内存的情况此类情况多为有会话SQL使用了较大内存导致本文将介绍如何监控和查找此类SQL语句。达梦数据库内存占用可以简单的分为缓冲区和内存池分别提供系统视图VBUFFERPOOL和VBUFFERPOOL和VBUFFERPOOL和VMEM_POOL进行监控。缓冲区缓冲区包括数据缓冲区、日志缓冲区、字典缓冲区和SQL缓冲区。数据缓冲区是数据页写入磁盘之前以及从磁盘上读取数据页之后数据页所存储的地方分为四种类别分别为BUFFER、RECYCLE、FAST 、KEEP类别 用途 淘汰机制对应INI参数BUFFER默认缓冲区普通数据页正常淘汰BUFFERMAX_BUFFERRECYCLE临时表数据页正常淘汰RECYCLEFAST数据页、回滚页常驻缓冲区FAST_POOL_PAGESKEEP普通数据页很少淘汰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.CREATORB.THRD_ID AND B.APPNAMEDIsql.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.CREATORB.THRD_ID AND B.APPNAMEDIsql.exeGROUP BY A.CREATOR,B.SQL_TEXT ORDER BY TOTAL_M DESC;下面我们使用DISQL工具执行一个两个大表的HASH连接语句然后查看内存使用情况语句计划如下执行过程中内存使用情况可以看出此会话在执行过程中一共使用了116M内存如果此类SQL语句并发过多数据库实例占用内存会非常大。上面介绍了SQL运行过程中我们怎样去查看会话使用内存大小但是如果SQL已经执行结束我们怎样去定位SQL使用内存情况呢达梦数据库提供了VSQLSTAT和VSQL_STAT和VSQLS​TAT和VSQL_STAT_HISTORY系统视图对语句级资源监控需要调整参数ENABLE_MONITOR1才开始监控。VSQLSTAT视图提供监控项生成的条件阀值SPSETSQLSTATTHRESHOLD()设置监控阀值超过阀值才开始监控VSQL_STAT视图提供监控项生成的条件阀值SP_SET_SQL_STAT_THRESHOLD()设置监控阀值超过阀值才开始监控 VSQLS​TAT视图提供监控项生成的条件阀值SPS​ETS​QLS​TATT​HRESHOLD()设置监控阀值超过阀值才开始监控VSQL_STAT_HISTORY视图单机最大行数为 10000。我们可以根据此视图对正在执行的语句和执行后的语句进行监控可以使用下面的语句找出使用大内存的SQLSELECT SF_GET_SESSION_SQL(SESSID),MAX_MEM_USED,SQL_TXT FROM VSQLSTATORDERBYMAXMEMUSEDDESC;达梦数据库还提供了VSQL_STAT ORDER BY MAX_MEM_USED DESC; 达梦数据库还提供了VSQLS​TATORDERBYMAXM​EMU​SEDDESC;达梦数据库还提供了VLARGE_MEM_SQLS和VSYSTEMLARGEMEMSQLS视图对大内存sql语句进行监控通过INI参数LARGEMEMTHRESHOLD进行设置阈值一条sql语句使用的内存值超过此参数配置就会记录到VSYSTEM_LARGE_MEM_SQLS视图对大内存sql语句进行监控通过INI参数LARGE_MEM_THRESHOLD进行设置阈值一条sql语句使用的内存值超过此参数配置就会记录到VSYSTEML​ARGEM​EMS​QLS视图对大内存sql语句进行监控通过INI参数LARGEM​EMT​HRESHOLD进行设置阈值一条sql语句使用的内存值超过此参数配置就会记录到VLARGE_MEM_SQLS中此视图保留最近的1000条sql语句通过如下语句可以对大内存sql进行排序SELECT * FROM VLARGEMEMSQLSORDERBYMEMUSEDBYKDESC;VLARGE_MEM_SQLS ORDER BY MEM_USED_BY_K DESC; VLARGEM​EMS​QLSORDERBYMEMU​SEDB​YK​DESC;VSYSTEM_LARGE_MEM_SQLS视图则存放的是系统中使用内存最多的 20 条 sql 语句。总结通过上面的介绍日常中我们可以通过实时查询VMEMPOOL和VMEM_POOL和VMEMP​OOL和VSQL_STAT统计正在执行的SQL使用内存大小也可以通过视图VSQLSTATHISTORY和VSQL_STAT_HISTORY和VSQLS​TATH​ISTORY和VLARGE_MEM_SQLS等进行数据库系统运行过程中的大内存SQL进行监控和排查在定位到具体SQL语句后我们可以在测试环境进行重现实时的捕获其用到的内存情况最后可以通过对SQL进行针对优化消除HASH、排序等操作来减少SQL的内存使用。yangeoooo达梦数据库大内存SQL定位和监控

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询