问题描述:
当使用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
相关推荐
山峰哥30 分钟前
数据库工程:Explain执行计划对比实战指南crisps_ww39 分钟前
自媒体运营分析-BI可视化仪表盘制作Geek-Chow1 小时前
微服务认证与授权:01 — 概念烤代码的吐司君1 小时前
Redis IO 多路复用原理与引入原因深度解析Database_Cool_2 小时前
单库瓶颈解决方案首选:阿里云 PolarDB-X 平滑替代分库分表2503_931712483 小时前
10m/s超高速电梯:西奥XO-NEWIII如何树立行业速度标杆无小道3 小时前
Redis——redis和mysql的数据同步AI的探索之旅3 小时前
从 Ubuntu 14.04 到 24.04:TI AM335x 开发环境完整迁移与 Agent 接管方案辰合软件3 小时前
通达OA目录结构与核心文件解析名不经传的养虾人4 小时前
从0到1:企业级AI项目迭代日记 Vol.61|记忆不是越多越好,装一道门比装满更重要