【TiDB 使用环境】生产环境
【TiDB 版本】7.1。6
【操作系统】liunx
【部署方式】云上部署(什么云)/机器部署(什么机器配置、什么硬盘)
【集群数据量】3
【集群节点数】
【问题复现路径】replace操作悲观实物上锁时间过长
【遇到的问题:问题现象及影响】 replace操作悲观实物上锁时间过长
1 个赞
把SQL和相关的执行计划发出来
sql:
REPLACE INTO `hc_records`
SET
`uid` = ?,
`video_detail_id` = ?,
`video_id` = ?,
`created_at` = ?,
`updated_at` = ?,
`applet_id` = ? [arguments: (30015157, 283160, 211131, 1759124412, 1759124412, 30272)];
执行计划:
1 个赞
这种delete再insert像是并发导致的锁冲突,可以换一种方式试试,使用:INSERT … ON DUPLICATE KEY UPDATE,这种会估计会改善一些。
1 个赞
好的,感谢
1 个赞
改了 好了?
搞好了啊
1 个赞
先在应用层减少不必要的replace,合并批量操作,避免产生热点key。
1 个赞
上锁耗时,我理解是数据库,当前存在排他锁,导致等待过长。可以监控当时的语句运行情况,是否有长时间运行语句,以及语句是否涉及锁
1 个赞
是不是大事务呢,如果是大事务,耗时长应该是正常的啊

