mysql大量数据更新采用什么样的方式比较好,20w条数据一次更新?

【问题描述】有20多万条数据需要更新到一个表中表总的数据量是30万条左右,1小时会更新一次,数据表又存在其他查询和更新。所以经常造成更新的时候锁表,数据库卡死的情况。
【思路细节】目前采取的方式是,把表分区成9个,需要更新的部分拆分为5个不同的区,一次更新一个区,每次差不多4万条数据。删除一个分区。然后重建分区。然后插入数据。这样的结果就是这个过程中如果有查询和更新,就会等待和卡死。
目前方案,
alter table 表 drop partition 分区;
ALTER TABLE 表 REORGANIZE PARTITION 分区 INTO (
PARTITION 分区 VALUES LESS THAN (6),
PARTITION 分区2 VALUES LESS THAN (7)
);
insert into 表 (数据) select 数据 from 临时表;
最新回答
梦在深巷。

2026-01-10 02:50:30

建缓冲区。比如其他类型的
高速缓存
(redis等)作为中间缓冲层。
数据的查询,更改首先在这个层处理,处理完再更新到对应的数据库。
注意额外增加锁,或者缓存机制防止缓存击穿,雪崩导致系统崩溃。
芣敗と偢旪

2026-07-19 07:18:31

大批量更新数据mysql批量更新的四种方法 mysql 批量更新如果一条条去更新效率是相当的慢, 循环一条一条的更新记录,一条记录update一次,这样性能很差,也很容易造成阻塞。
收起 1条折叠回答