【 使用环境 】生产环境
【 OB or 其他组件 】observer
【 使用版本 】社区版4.3.1.0
【问题描述】
1 数据库插入效率过慢
【复现路径】无特殊操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
我该如何排查并优化一下?
可以借助ocp,先看下ocp SQL诊断的 SlowSQL
可以看到SQL的耗时等情况
您好 有具体的操作步骤吗
–可以通过诊断信息排查 查看某段时间内执行时间 TOP N 的请求
select /*+ parallel(15) */ sql_id, elapsed_time, trace_id, substr(query_sql, 1, 6) --这里为了展示方便,对 query_sql 做了截断
from oceanbase.gv$ob_sql_audit
where tenant_id = 1
and IS_EXECUTOR_RPC = 0
and request_time > (time_to_usec(now()) - 10000000)
and request_time < time_to_usec(now())
order by elapsed_time desc
limit 10;
优化:
1、可以批量插入多行数据
2、如果有唯一约束检查 可以关闭唯一约束检查
3、禁用索引,等数据插入完以后在打开索引
4、手动分批提交事务
收集SQL性能问题信息
obdiag gather scene run --scene=observer.perf_sql --env “{db_connect=’-hxx -Pxx -uxx -pxx -Dxx’, trace_id=‘xx’}”
https://www.oceanbase.com/docs/common-obdiag-cn-1000000001491226
插入慢也属于慢查询,这里是可以看的
你查询gv$ob_sql_audit也是一样的
把这个截图的长度 调大点 看看是不是你插入的语句
故障排查第一步推荐先用诊断工具obdiag 巡检一下,看看集群本身有没有不合理的地方。说明:以下命令obdiag 2.5.0 版本
obdiag check \
--config db_host=xx.xx.xx.xx \
--config db_port=xxxx \
--config tenant_sys.user=root@sys \
--config tenant_sys.password=*** \
--config obcluster.servers.global.ssh_username=test \
--config obcluster.servers.global.ssh_password=****** \
--config obcluster.servers.global.home_path=/home/admin/oceanbase
--config obcluster.servers.nodes[1].data_dir=/home/admin/oceanbase/store
--config obcluster.servers.nodes[1].redo_dir=/home/admin/oceanbase/store
--config obproxy.servers.nodes[0].ip=xx.xx.xx.1 \
--config obproxy.servers.nodes[1].ip=xx.xx.xx.xx.2 \
--config obproxy.servers.global.ssh_username=test \
--config obproxy.servers.global.ssh_password=****** \
--config obproxy.servers.global.home_path=/home/admin/obproxy
文档:https://www.oceanbase.com/docs/common-obdiag-cn-1000000001491192
直接运行obd obdiag check <集群名> 就行
这个环境能直接安装一个obdiag 2.5.0的吗?文档 https://www.oceanbase.com/docs/common-obdiag-cn-1000000001491140
obdiag可以不依赖obd,独立使用
都可以,你要是想用obd安装新obdiag的话可以的,就是obdiag 2.5.0 的一些新特性还没适配obd的版本。只用obdiag check的话没问题的。
使用odb如何安装2.5版本的obdiag呢
针对上面出现巡检认证失败的问题,是不是需要在~/.obdiag/config.yml配置当前服务器的ssh账号和密码才可以?