问题描述:
当使用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
相关推荐
xcLeigh7 小时前
IoTDB 数据导入全攻略:工具、自动加载与 Load SQL 详解清漠2338 小时前
win11“网络和Internet“中无“以太网“这个选项解决记录那个松鼠很眼熟w10 小时前
3.Statement对象概述,以及Statement的弊端山岚的运维笔记11 小时前
SQL Server笔记 -- 第72章:隔离级别与锁定硅基动力AI11 小时前
如何判断一个关键词值不值得做?新缸中之脑12 小时前
从零实现AI代理的长期记忆清水白石00812 小时前
Fixture 的力量:pytest fixture 如何重新定义测试数据管理Rick199314 小时前
如何保证数据库和Redis缓存一致性那个松鼠很眼熟w14 小时前
2.获取数据库连接_ziva_15 小时前
5 分钟搭建 CSV 数据问答系统:LangChain + LLM 实战教程