栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

DM8数据库性能问题分析

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

DM8数据库性能问题分析

前言

遇到数据库性能问题,一般从以下几个方面分析

一、操作系统

在操作系统层面主要从以下几个方面入手

1. cpu

可使用top命令查看cpu使用率
这里主要查看DMSERVER 的CPU使用情况

另一方面看USR/SYS的使用率,如果比较高的话也需要注意一下

2.磁盘I/O

使用iostat命令查看磁盘I/O使用情况

我们需要关注util%,如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈,这个时候需要关注一下对应的rkB/s和wkB/s,在200M左右最好,如果太低可能达不到数据盘的要求。

提示:%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比

也可以使用dstat工具,更直观,可以收集CPU/IO/NET信息,但它的弊端是不能区分设备

3.内存

使用free命令查看内存使用情况

free -m


关注服务器剩余可用内存(free列),另外还需要关注磁盘缓存(buff/cache 列)

4.nmon

使用nmon工具监控系统一段时间的整体情况
输入c代表cpu,m代表Memory,d代表磁盘io,n代表network,可以全部显示

打印nmon结果集

nmon -s 2  -c 300 -F xxx.nmon

注:每2秒采集一次,总共采集300次

5.perf top

使用perf top命令查看系统热点情况
perf top会生成函数调用热力图,来判断哪些函数占用大量的cpu时间

[root@localhost ~]# perf top -e cpu-clock


分析:如果发现数据库主机的cpu、I/O、内存等使用率很高,往往说明数据库存在性能瓶颈。也可能是硬件本身存在问题,但这种可能性比较小,也容易排除


二、实例 1.数据库架构

确认数据库架构是否最优

2.INI参数优化

配置对应INI优化参数

3.数据库会话监控

可使用下面的sql监控数据库状态

--查询活动会话数
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 1.生成sqllog

开启sql日志功能

--sqllog.ini 配置示例  

[SLOG_ALL]
    FILE_PATH    = ..log
    PART_STOR    = 0
    SWITCH_MODE  = 2
    SWITCH_LIMIT   = 512
    ASYNC_FLUSH   = 1
    FILE_NUM = 4
    ITEMS    = 0 
    SQL_TRACE_MASK  =  2:3:22:25:28 
    MIN_EXEC_TIME = 100 
    USER_MODE   = 0 
    USERS =
    
2.sql汇总分析

使用日志转换工具生成sql汇总

3.确定目标sql

对于高并发sql,思路是单个SQL调到最快以及优化应用,减少执行次数

对于一般并发sql,思路是使用索引优化,改写sql

4.sql性能分析工具

ET是DM自带的分析工具,能统计SQL每个操作符的时间花费,从而定位到有性能问题的操作,指导用户去优化

总结

以上就是dm数据库性能优化思路

达梦技术社区:https://eco.dameng.com

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/945772.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号