达梦数据库出现卡慢简单分析点

1.检查是否有锁表

        查询锁表:select sess_id,sql_text from v$sessions sess,v$lock lck where         sess.trx_id=lck.trx_id and lck.blocked=1; --查询僵死会话

        解锁:根据会话ID,停止会话

        sp_close_session(sess_id);

 2.根据v$sessions,V$LONG_EXEC_SQLS,确认sql是否需要优化

        select * from v$sessions;--根据情况,可关闭执行卡死的会话。

查询系统访问用户是否过多:select count(1) from (select clnt_ip from v$sessions where create_time>'2021-07-20' group by clnt_ip)

会话数调整:达梦数据库修改最大连接数_江上一小白的博客-CSDN博客_达梦最大连接数

3.根据v$connect 确认连接数是否过高

 select * from V$CONNECT where STATUS$='ACTIVE';--查询正在使用的连接

select ip_addr,count(1) from V$CONNECT group by ip_addr;--每个主机开启的连接数

select b.name,a.sql_text,a.clnt_ip from v$sessions a,V$CONNECT b where a.sess_id=b.saddr order by b.name, b.ip_addr;--每个链接对应的会话

4.根据DM性能监视工具-性能监视-资源监控-sql硬解析频率是否过高,运行参数配置是否合理

       1 sql硬解析引起的并发数限制,可查询出访问次数较高的几个功能界面和执行率较

        高的硬解析语句,优化功能的sql执行方式。 

        如:select * from test where id='123'; 改成 select * from test  where id=? 方式执行。

或select para_value from V$DM_INI  where para_name='USE_PLN_POOL';

 如果已经开启sql日志功能( V$SQL_HISTORY),可查询出调用次数最多的sql,进行针对性优化:

                select * from ( select regexp_replace(top_sql_text, '[''][[:print:]]*['']', '') sql1, count(1) cc                 from V$SQL_HISTORY group by regexp_replace(top_sql_text, '[''][[:print:]]*['']', '') )                 order by cc desc--根据sql的调用次数降序排列

       

 2  运行参数配置不合理,可修改配置

       

        如查询:select  * from V$DM_INI  where para_name='HJ_BUF_GLOBAL_SIZE';
        调整:alter system set 'HJ_BUF_GLOBAL_SIZE' =5000  both;

        运行参数主要调整:

                内存和会话数2方面,其中内存调整包括:内存池,缓冲区( 包括 SQL 缓冲池),排序区,哈希区4点。

运行内存配置可参考:达梦内存调整及修改方法_ITPUB博客

达梦数据库:性能参数优化篇 - 百度文库

5.检查系统资源

       cup使用率、运行内存使用率,磁盘使用率,IO使用是否过高,是否使用的机械硬盘有坏道等,影响数据库运行。命令如: iftop(流量监控);top (Linux整体性能监控);iostat (IO监控)。

常用资源监控命令:Linux资源监控命令集合 - 百度文库

        系统资源不足可升级硬件或部署达梦读写分离的集群模式,分摊压力。

架构图参见:达梦数据库监控

注:DM7版本事务控制期间insert,delete ,update过程中,引起的select卡慢,可升级到DM8版本解决。

6.检查表数据量是否存储的比较多

        表数据过多引起的sql卡慢,可对存储数据量过多的表 分区 尝试解决,

        对数据量巨多的可分表+多级分区联合使用解决查询卡慢的问题。

        如:test表数据过多,根据登录账号的usernameid创建hash分区 (DM8_创建分区脚本)

                CREATE TABLE "TEST_1"
                (
                "ID" VARCHAR2(32) NOT NULL,
                "USERNAMEID" VARCHAR2(32),
                "COLNAME1" VARCHAR2(199),
                "COLNAME2" VARCHAR2(1) ) partition by hash (USERNAMEID) partitions 16   ;

                alter table TEST rename to TEST_BAK;
                alter table TEST_1 rename to TEST;
                INSERT INTO TEST SELECT * FROM TEST_BAK;commit;

        CREATE  INDEX "TEST_USERNAMEID_COLNNAME1" ON TEST("USERNAMEID" ASC,"COLNAME1" ASC) GLOBAL   ;--分区索引

alter table TEST enable row movement;--允许分区字段更新

7.查找出耗时的sql进行优化

1.通过试图查询历史执行的sql

select * from V$SQL_HISTORY where time_used>3000000 order by  start_time desc;--查询出执行时间超过3s的sql;

select * from v$dm_ini where para_name='ENABLE_MONITOR';---查看是否开启
  call sp_set_para_value(1,'ENABLE_MONITOR',1);--设置开启

2 若是sql_history未开启,可通过sql日志文件分析,历史执行的sql运行的情况

        如:windows 系统查询耗时在10s以上的sql语句.

        使用notepad++文本编辑器,打开达梦sql日志文件,ctrl+h打开搜索框输入正则查询

        条件点击全部标记,可将耗时在10s以上的所有sql查询出来并标记;

        点击搜索-书签->复制书签行,可以将标记的所有耗时在10s以上的sql拷贝出来。

 

 linux 系统:查询耗时在10s以上的sql语句.

grep -n '[0-9]\{5,10\}[(][m][s][)]' /mnt/e/dmdbms/log/dmsql_DMSERVER_20220303_171739.log

        输入以上命令可查询出耗时在10s以上的sql,

        /mnt/e/dmdbms/log/dmsql_DMSERVER_20220303_171739.log :达梦sql日志所在路径。

        '[0-9]\{5,10\}[(][m][s][)]'   :正则查询条件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对象的属性

首先要理解的是“实例变量”。 我们在__init__方法中并不是创建了实例变量,我们是添加了一个或者多个属性给实际的对象 在__init__内部 self.x 5和外部 f.x 5没有什么不同。 那么类呢? 1 >>> class Bar(object): 2 pass 3 4 >>>…

hibernate.session.get()方法不能获取表中最新数据解决方式样例

1.A a (A)session.get(A.class, id); sess.createSQLQuery("update A set name where id ").executeUpdate(); A a1 (A)session.get(A.class, id);//a1中获取不到修改后的name值 sess.refresh(a1);//刷新a1对象,取出数据库数据 注:hibern…

hibernate 映射_Hibernate映射集合性能问题

hibernate 映射首先,本文的灵感来自于Burt Beckwith在2011年1月27日于SpringOne 2GX上发表的有关高级GORM –性能,自定义和监视的演讲 。 简而言之, Burt Beckwith讨论了使用映射集合和GORM中的Hibernate 2级缓存的潜在性能问题,以…

SEL selector (二)

SEL消息机制工作原理是什么 引用下面文章: 我们在之前有提到,一个类就像一个 C 结构.NSObject 声明了一个成员变量: isa. 由于 NSObject 是所有类的根类,所以所有的对象都会有一个 isa 的成员变量[公共继承].而该 isa 变量指向该对象的类(图3.15)[类在Objective-C中…

Ext grid 根据行号获取行数据

var storeExt.getCmp(grid_id).store;// var storerowstore.getAt(row_num);//行数据 var phonenumberstorerow.get(phonenumber);//列信息 //------------------------------------------------------------------------- var dataExt.getCmp(grid_id).store.data; var d…

mobile cpu上禁用alpha test的相关总结

因为,每家芯片的特性不同,根据向framebuffer写法的不同,分为tile-based的mobile cpu,如ImgTec PowerVR,ARM Mali,一部分老版本Qualcomm Adreno。还有标准的direct(immediate)的mobil…

学习笔记_jquery(js)遍历页面标签

$(#selectTable tr).each(function(i){ // 遍历 tr $(this).children(td).each(function(j){ // 遍历td var id $(this).context.id; }); }); //---------------------- $("input[namename1]").each(function(){ //遍历name…

简易分享功能(非第三方)

在做一个新项目时,需要一个新浪和微信的分享功能,起初看到这个需求,感觉没有什么,直接使用第三方比较成熟的分享组件就可以的,比如:jiathis、百度分享组件,这些都可以很轻松并且方便的完成所需要…

达梦定时迁移数据

1. 生成迁移源代码 1.1 启动DM迁移工具(bin/dts.exe) 1.2 右击迁移管理空白处 -> 新建工程 1.3 展开工程 -> 右击迁移,新建迁移 -> 输入迁移名称,确认 1.4 右击迁移名称,打开 -> 输入源数据库连接信息&…

JSP教程–最终指南

编者注: JavaServer Pages(JSP)技术使您可以轻松创建同时包含静态和动态组件的Web内容。 JSP技术提供了Java Servlet技术的所有动态功能,但提供了一种更自然的方法来创建静态内容。 JSP技术的主要功能包括用于开发JSP页面的语言&…

CRC校验(转)

CRC即循环冗余校验码(Cyclic Redundancy Check[1] ):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据…

tongweb6数据源使用中时常报空异常处理方式

1.在tongweb控制台 -> jdbc配置中设置数据源参数 1.1 勾选空闲超时,时间默认 1.2 勾选泄露超时时间 ,时间为半天(14400) 1.3 勾选连接有效性检查、创建连接验证、获取连接验证、归还连接验证 图中设置泄露超时时间为900…

Ios tab Bar 使用方法

http://blog.sina.com.cn/s/blog_63578f140100w56m.html UITabBar* tabBar [[UITabBar alloc] initWithFrame:CGRectMake(40,0.0,240,30)]; [mainView addSubview:tabBar]; [tabBar release]; UITabBarItem *tabBarItem1 [[UITabBarItem alloc] initWithTitle:"排队人数…

spring smtp_使用Spring使用Java发送电子邮件– GMail SMTP服务器示例

spring smtp对于使用Java发送电子邮件, JavaMail API是标准解决方案。 如官方网页所述,“ JavaMail API提供了独立于平台和协议的框架来构建邮件和消息传递应用程序”。 必需的类包含在JavaEE平台中,但是要在独立的JavaSE应用程序中使用它&am…

关闭uboot MMU 会导致android2.3 S5pv210 系统不稳定?!why

问题描述在uboot里面屏蔽了MMU 使能//#define CONFIG_ENABLE_MMU就导致android 2.3 在S5pv210 上不稳定了,如果没屏蔽就稳定很多,why?!坑爹的人啊,问了一些做了几年linux和android的人说没影响的,啥玩意啊&…

Java 9中的5个功能将改变您开发软件的方式(还有2个不会)

有望在Java 9中发布的最令人兴奋的功能是什么? 不要对Java 9的相对沉默近来分散注意力。JDK提交者正在努力准备下一个版本,该版本预计将在2015年12月完成,而功能将在几个月后完成 。此后,它将通过严格的测试和错误修复了将其计划…

eclipse远程tomcat javaweb debug样例(windows)

1.tomcat配置可被远程debug端口参数 catalina.bat 中添加 set CATALINA_OPTS-Xdebug -agentlib:jdwptransportdt_socket,servery,suspendn,address8000 导出项目war包到tomcat/webapps/目录下 切换到tomcat/bin目录下 双击startup.bat启动运行项目 2.eclipse中启动远程debug…

总账分录追溯发票或者付款

--总账分录追溯发票 SELECT DISTINCT AIA.*FROM AP_AE_HEADERS_ALL AAH, --帐户分录头表AP_AE_LINES_ALL AAL, --账户分录行表,每一个会计事件都会在此表中产生会计分录GL_JE_BATCHES GJB,GL_JE_HEADERS GJH,GL_JE_LINES GJL,AP_INVOICES_ALL …

mysqlDM判断字符串中是否存在非中文

MYSQL判断字符串是否全中文 正则表达式匹配[一-龥]中文字符[ a-zA-Z]英文字母[ 0-9]数字[ぁ-ゞァ-ヾ]日文字符1.查询存在非中文的记录 :select * from tablename where columnname REGEXP [^一-龥]; 2.查询存在中文的记录:select * from columnname wh…

ASP.NET MVC的ContentResult

ASP.NET MVC的ContentResult返回简单的纯文本内容,可通过ContentType属性指定应答文档类型,通过ContentEncoding属性指定应答文档的字符编码。一个例子来演习,自定义一个RwResult,它继承ContentResult,为视图象ASP.NET…