3万数据过滤删除很慢,无法获取锁,有啥好方法吗?

image

还有别的进程在更新这张表吗?

3w数据也不多啊。limit 搞起来,一段段的删。

按照主键id范围切片,分段删除

没有,感觉tidb的删除时个大坑

3万数据也不算多,需要这么费劲吗?

那执行计划贴一下看看

https://docs.pingcap.com/zh/tidb/stable/troubleshoot-lock-conflicts
最好看下监控 是读写冲突还是写写冲突。

这是我实践中清理tidb大量数据的脚本,这样可以实现删除百万级别以上的数据,而且不影响tidb正常使用,希望能帮助到你

date1=date --date "7 days ago" +"%Y-%m-%d"
delete_db_sql=“delete from mysql_table where create_date_time<‘$date1’ limit 10000”

i=0

while ((++i)); do
a=/bin/mysql -uroot -p123456 -A mysql_database -h127.0.0.1 --comments -e "${delete_db_sql}" -vvv|grep "Query OK" |awk '{print $3}'
if(($a<1)); then
break 1
fi
sleep 1
printf “%-4d” $((i))

done

厉害了,删除都开始这么麻烦了

参考一下这位老师的思路,优先排查一下锁冲突问题。这个问题很大部分可能是锁冲突导致的获取所锁超时。另外你可以通过 https://docs.pingcap.com/zh/tidb/v6.1/information-schema-data-lock-waits#data_lock_waits 查看当前 TiKV 中悲观锁的情况。