问题描述:
当使用ON DUPLICATE KEY UPDATE的sql来访问时,
可能会出现多个线程同时写入一个已有的数据里。
解决办法:使用 REPLACE INTO
原因:
- 保持更好的并发性:REPLACE INTO 在插入记录时会先删除原有记录,然后再插入新记录。因此,在多个线程同时执行插入操作时,不会对同一行数据进行更新,从而避免了锁表和并发冲突的问题;
- 简化逻辑:您不需要关心冲突时是更新还是插入新记录的问题,只需要执行插入操作;
举例 :
sqlupdate_sql = "UPDATE 表名 SET 列名1 = %s WHERE 列名2 = %s"更改为:
sqlupdate_sql = "REPLACE INTO 表名 (列名1, 列名2) VALUES (%s, %s)"
多线程使用处理数据库导致锁表解决办法
EaSoNgo1112023-10-14 14:24
相关推荐
oradh1 小时前
Oracle闪回技术操作总结ltl1 小时前
RocksDB 并发 Compaction 与 Rate Limiter闻道且行之3 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透夏炳辉.4 小时前
PostgreSQL 高可用集群核心配置参数全解:从原生流复制到 Patroni 企业级方案努力的小雨5 小时前
KES 开启 SSL 前,证书、端口和客户端要一起验DevOps老兵5 小时前
AI全栈知识07:向量数据库 - Milvus/Chroma实战这个DBA有点耶5 小时前
当数据库从“存储”走向“决策”:金仓数据库的融合架构之路smilejingwei5 小时前
Trae+SQLazy 实践 SQL 国产化移植:Oracle => 达梦意疏6 小时前
2026年远控软件安全横评:六款主流工具逐项核查——官方文档、一手实测与安全事件,全摊开名不经传的养虾人6 小时前
从0到1:企业级AI项目迭代日记 Vol.90|Agent变快了,Judge定下来了