数据库常用性能分析

        数据库出现性能问题可以参考三个方面进行分析:服务器操作系统方面内存、cpu负载、磁盘读写、网络状态,数据库实例方面参数的设置,sql方面慢sql、执行计划、索引等方面去排查。

一、服务器操作系统方面分析

1、使用top命令查看cpu使用率
   top、htop, top和htop可以查看总体操作系统各方面整体情况,包含:当前系统时间、用户登陆情况、进程情况,cpu、内存、swap状态等。

   

2、使用free命令查看内存使用情况
        使用free可以查看mem内存和swap交换分区的total物理内存总量、used已使用量、free内存空闲量、share可共享内存总额以及Buffers/cached磁盘缓存的大小。

 3、使用dd命令查看磁盘读写情况

        磁盘读写:可以使用dd命令,对磁盘进行连续写入测试

4、使用telnet、scp、ping等命令查看网络状态

        网络状态:由于数据库大多数都是部署在无网络环境类似speedtest这样的命令无法使用,可以使用scp 命令测试应用服务器到数据库服务器之间的网络传输还有io写入,也可以使用ping 命令查看网络的延迟时间和丢包情况以及telnet命令查询端口是否开通

 5、DM性能监视工具 monitor

        DM性能监视工具是达梦系统管理员用来监视服务器的活动和性能情况,并对系统参数进行调整的客户端工具,它允许系统管理员在本机或远程监视服务器的运行状况。

 二、数据库实例层次

        数据库参数的优化:我感觉关于数据库参数方面的优化得根据用户的要求,产品线的需求,现场服务器的配置等等方面才可以对数据库进行更详细的优化,下面是一个通用的基础参数配置。

        

        数据库配置参数查看,可以去查看数据库dm.ini文件(修改配置文件后需要重启数据库),也可以在sql命令行查看

#查询配置文件所有参数

SELECT * FROM V$DM_INI;

#指定参数名查询

SELECT * FROM V$DM_INI WHERE PARA_NAME = '实际的参数名';

  #查询活动会话数

select count(*) from v$sessions where state='ACTIVE';

#已执行超过2秒的活动SQL

select * from (
SELECT sess_id,sql_text,datediff(ss,last_send_time,sysdate) Y_EXETIME,
   SF_GET_SESSION_SQL(SESS_ID) fullsql,clnt_ip
FROM V$SESSIONS WHERE STATE='ACTIVE')
where Y_EXETIME>=2;

#锁查询

select o.name,l.* from v$lock l,sysobjects o where l.table_id=o.id and blocked=1;

#阻塞查询

with locks as(
select o.name,l.*,s.sess_id,s.sql_text,s.clnt_ip,s.last_send_time  from v$lock l,sysobjects o,v$sessions s
where l.table_id=o.id and l.trx_id=s.trx_id ),
 lock_tr as (   select trx_id wt_trxid,row_idx blk_trxid from locks where blocked=1),
res as(    select sysdate stattime,t1.name,t1.sess_id wt_sessid,s.wt_trxid,
 t2.sess_id blk_sessid,s.blk_trxid,t2.clnt_ip,SF_GET_SESSION_SQL(t1.sess_id) fulsql,
 datediff(ss,t1.last_send_time,sysdate) ss,t1.sql_text wt_sql  from lock_tr s,locks t1,locks t2
where t1.ltype='OBJECT'  and t1.table_id<>0   and t2.ltype='OBJECT'  and t2.table_id<>0
 and s.wt_trxid=t1.trx_id  and s.blk_trxid=t2.trx_id)
select distinct wt_sql,clnt_ip,ss,wt_trxid,blk_trxid  from res;

三、sql层次

3.1、执行计划

         什么是执行计划? 一条 SQL 语句在 DM 数据库中执行过程或访问路径的描述

#通过 EXPLAIN 命令查看

EXPLAIN SELECT * FROM SYSOBJECTS;

3.2、定位查询慢SQL

#方法一

#开启 SQL 日志:

SP_SET_PARA_VALUE(1, 'SVR_LOG', 1);

#关闭 SQL 日志:

SP_SET_PARA_VALUE(1, 'SVR_LOG', 0);

#方法二

#显示最近 1000 条执行时间较长的 SQL 语句

SELECT * FROM V$LONG_EXEC_SQLS;

#显示服务器启动以来执行时间最长的 20 条 SQL 语句

SELECT * FROM V$SYSTEM_LONG_EXEC_SQLS;

        可以根据实际情况需要,修改sqllog.ini来满足需要。

3.3、使用性能监视工具查看慢sql

 总结:

        在数据库的设计方面,如果项目前期就能够从表和索引等的开发设计,或者是数据库运行架构设计等开始就介入进来,远远要比项目后期上线运行后再去做数据库性能相关工作带来的成效好的多。同时,合规有效的SQL语句开发,会给项目的上线稳定运行带来不小的收益,这也是我们应该去关心的重点。

更多内容可访问达梦官方社区地址:https://eco.dameng.com

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值