4台不同地区的服务器,其中一台io写入速率120mb/s,其他都不超50mb/s。
io消耗最高的那台慢日志有超一半的insert语句,时间超1s所以都被记录下来了,但执行时间都在1~2s之间。不是大事务和ddl操作影响的。
小伙伴们有优化思路吗?
insert已经是批量插入了, bulk_insert_buffer_size是8m,调大点会有效果吗
4台不同地区的服务器,其中一台io写入速率120mb/s,其他都不超50mb/s。
io消耗最高的那台慢日志有超一半的insert语句,时间超1s所以都被记录下来了,但执行时间都在1~2s之间。不是大事务和ddl操作影响的。
小伙伴们有优化思路吗?
insert已经是批量插入了, bulk_insert_buffer_size是8m,调大点会有效果吗
120mb/s也不会很高吧
那是数据活着请求分布不均?这台IO写入高的机器要么就是大事务SQL要么就是请求是其他机器的两倍
哈哈,但凡怀疑有问题,先用诊断工具obdiag 来一波巡检,
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-1000000001326848
后续排查发现写入量大的服务器,每小时执行的sql比其他地区的多30%~50%,不知道增加写缓冲区有没有用,insert都是顺序插入,一般不会慢才对,看慢日志,lock_time也很低,0.0000几秒。
多30%~50%的SQL差不多能解释,可以按照靖顺老师说先用obdiag收集更多的信息看看
打卡攒积分
很强
遇事不决,就找obdiag