各位专家们好!
数据库新人,最近遇到个问题:一分钟连续插了500条数据,SQL内容形式如下:
INSERT INTO LOG(a,b,c,d,e,f,g,....z) values(1,2,3,......26);
大概三十多个字段吧。
然后LOG
这个表生产环境大致有4亿条数据。单独一条一条插入不慢,但是峰值的时候一分钟同时插500条左右的时候就每一条耗时1分钟左右。
请问这可能是什么原因导致的呢?有什么排查思路吗?
OceanBase版本:3.1.2
谢谢大佬们的解答!
各位专家们好!
数据库新人,最近遇到个问题:一分钟连续插了500条数据,SQL内容形式如下:
INSERT INTO LOG(a,b,c,d,e,f,g,....z) values(1,2,3,......26);
大概三十多个字段吧。
然后LOG
这个表生产环境大致有4亿条数据。单独一条一条插入不慢,但是峰值的时候一分钟同时插500条左右的时候就每一条耗时1分钟左右。
请问这可能是什么原因导致的呢?有什么排查思路吗?
OceanBase版本:3.1.2
谢谢大佬们的解答!
实时执行计划展示可以展示 SQL 的物理执行计划。
使用 EXPLAIN
命令可以展示出当前优化器所生成的执行计划,但由于统计信息变化、用户 session 变量设置变化等,会造成该 SQL 在计划缓存中实际对应的计划可能与 EXPLAIN
的结果并不相同。为了确定该 SQL 在系统中实际使用的执行计划,需要进一步分析计划缓存中的物理执行计划。
用户可以通过查询 (g)v$plan_cache_plan_explain
视图来展示某条 SQL 在计划缓存中的执行计划。
https://www.oceanbase.com/docs/community-observer-cn-10000000000015311
这貌似是dba 的日常经常干的事情
看使用上能不能做一些优化, 比如batch insert,
再看执行计划和表schema, 索引 看能不能优化等等.
再看监控数据, 有没有一些等待事件或大查询或定时任务
如果平常是好的, 突然变糟了, 需要检查是不是硬件故障或突然备份, ddl 变更之类的事情
最后看你机器配置和load, 是不是load 已经到了你的硬件峰值, 那建议升级硬件, 任何数据库在超负荷压力下, 都会扛不住的.
建议可以看看文档和我们直播分享的性能优化部分
顺便问一下:
是的,我们是开发,不是DBA,遇到了问题,想先研究下 。这就去联系下DBA,根据各位大佬的提示看看
。
谢谢!
你这个问题, 找个dba, 应该可以帮你搞定
看看执行计划应该就能知道原因了。
SQL已经很简单了,看起来更有可能是峰值时 集群发生什么了。比如说租户内存接近使用限制被降速,或者集群在转储合并,或者租户在切换。DBA 管理着集群,应该可以从监控和集群层面找到原因。
对于开发而言,如果你有权限查看 SQL审计视图 v$sql_audit, 那从里面也能看出一些线索。
也可以看看下面的思路。