我的数据库遇到了插入效率慢的问题

【 使用环境 】生产环境
【 OB or 其他组件 】observer
【 使用版本 】社区版4.3.1.0
【问题描述】
1 数据库插入效率过慢
【复现路径】无特殊操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

1 个赞

我该如何排查并优化一下?

可以借助ocp,先看下ocp SQL诊断的 SlowSQL
可以看到SQL的耗时等情况

1 个赞

您好 有具体的操作步骤吗

集群–>集群列表–>点集群名称–>租户管理–>租户列表–>点租户名称–>SQL诊断–> TopSQL或SlowSQL

1 个赞

我刚才查询了一下这个系统表,主要问题是插入慢的问题,没有慢查询

1 个赞

–可以通过诊断信息排查 查看某段时间内执行时间 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

1 个赞


查询结果是这样的

1 个赞

插入慢也属于慢查询,这里是可以看的

1 个赞

你查询gv$ob_sql_audit也是一样的

1 个赞

把这个截图的长度 调大点 看看是不是你插入的语句

1 个赞

故障排查第一步推荐先用诊断工具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

1 个赞

老师您好 我这边使用odb安装了obdiag,但是装完版本是2.0.0,有2.0.0的巡检脚本吗

1 个赞

直接运行obd obdiag check <集群名> 就行

1 个赞

执行结果

1 个赞

这个环境能直接安装一个obdiag 2.5.0的吗?文档 https://www.oceanbase.com/docs/common-obdiag-cn-1000000001491140

obdiag可以不依赖obd,独立使用

1 个赞

可以使用odb命令安装指定版本吗,我是按照下面这个说明安装的

1 个赞

都可以,你要是想用obd安装新obdiag的话可以的,就是obdiag 2.5.0 的一些新特性还没适配obd的版本。只用obdiag check的话没问题的。

使用odb如何安装2.5版本的obdiag呢

针对上面出现巡检认证失败的问题,是不是需要在~/.obdiag/config.yml配置当前服务器的ssh账号和密码才可以?