一、操作系统性能诊断
LINUX常用性能监控命令
- 使用top命令查看cpu使用率
- 使用iostat命令查看磁盘I/O使用情况
- 使用dstat工具查看磁盘I/O使用情况
- 使用free命令查看内存使用情况
- 使用nmon工具监控系统一段时间的整体情况
- 使用perf top命令查看系统热点情况
二、数据库参数优化
具体参数值请根据服务器配置进行更改,此参数信息在DM8实例安装目录的dm.ini文件,修改后,重启数据库生效。
参数名 | 含义 | 优化建议 | 默认值 | 建议值 |
MEMORY_POOL | 公共内存池,单位为M。 | 高并发时应调大,避免频繁向OS申 请内存 | 80 | 2048 |
N_MEM_POOLS | 将公共内存池分片,减少并发访问冲突,单位为 个。 | 4 | 4 | |
BUFFER | 数据缓冲区,单位为M。 | 如果数据量小于内存,则设置为数 据量大小;否则设置为总内存的 2/3比较合适 | 1000 | 120000 |
BUFFER_POOLS | BUFFER的分区数,一般配置为质数,取值范围为 1~500,当MAX_BUFFER>BUFFER时,动态扩展的缓冲 区不参与分区 | 并发较大的系统需要配置这个参数 减少数据缓冲区并发冲突,建议 BUFFER=MAX_BUFFER | 1 | 101 |
MAX_BUFFER | 数据缓冲区扩展最大值 | 建议配置成=BUFFER | 1000 | 120000 |
RECYCLE | 用于缓冲临时表空间,单位为M | 高并发或大量使用with、临时表、 排序等应该调大点 | 64 | 5000 |
SORT_BUF_SIZE | 排序缓存区,单位M | 建索引时调大点,平时默认 | 2 | 32 |
CACHE_POOL_SIZE | 用于缓存SQL、执行计划、结果集等 | 一般配置为1000M~4000M | 10 | 1024 |
DICT_BUF_SIZE | 数据字典缓存区,单位M | 用于缓存数据字典,默认5M,系统 中对象个数较多时适当加大 | 5 | 32 |
HJ_BUF_GLOBAL_SIZE | 哈希连接使用的内存空间上限,单位M | 高并发、hash操作多应调大 | 500 | 5000 |
HJ_BUF_SIZE | 单个哈希连接使用的内存 | 有大表的hash连接应调大 | 50 | 500 |
HAGR_BUF_GLOBAL_SIZE | 聚集操作使用的内存上限,单位M | 高并发、大量的聚集操作如sum等 应调大 | 500 | 5000 |
HAGR_BUF_SIZE | 单个聚集操作使用的内存 | 有大表的hash分组应调大 | 50 | 500 |
WORKER_THREADS | 工作线程的个数 | 建议设置为cpu核算或其两倍 1~64 | 4 | 32 |
ENABLE_MONITOR | 数据库系统监控的级别 | 性能优化时设置为3,运行时设为2 | 2 | 2或者3 |
OLAP_FLAG | 启用联机分析处理,0:不启用;1:启用;2: 不启用,同时倾向于使用索引范围扫描 | 联机交易系统建议设置为2,联机 分析系统建议设置为1 | 0 | 2 |
OPTIMIZER_MODE | 优化器计划探测模式。设置为1时,采用了左深树 方式进行探测,设置为0时,则采用的是卡特兰树 方式进行探测 | 2016年以后的版本建议设置为1, 采用新优化器 | 0 | 1 |
三、数据库会话监控
3.1查询活动会话数
3.2已执行超过2秒的活动
3.3锁查询
3.4阻塞查询
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;
四、DM8开启SQL日志功能
4.1 DM8 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 =
4.2开启和关闭sql日志功能
- 开启SQL日志:
SP_SET_PARA_VALUE(1, 'SVR_LOG', 1);
- 关闭SQL日志:
SP_SET_PARA_VALUE(1, 'SVR_LOG', 0);
更多资讯请上达梦技术社区了解: https://eco.dameng.com