gpt4 book ai didi

具有许多更新的 MySQL 事务

转载 作者:行者123 更新时间:2023-11-29 22:42:47 29 4
gpt4 key购买 nike

我有一个包含 100,000 条记录的表。我正在考虑使用事务来更新数据。将有一个查询将一列更新为零,并且大约有 5000 个更新,每个更新将更新一条记录。

这些大型事务对内存有何影响?事务运行时选择数据会出现任何重大问题吗?

<小时/>

编辑

  • 表是innodb
  • 已更新 1+5000 次
  • 记录按索引列更新

感谢您的回答。

最佳答案

计划 A:2 个 UPDATE 语句 - 1 个用于 0,1 个用于其他 5000。但这也许不切实际?

计划 B:(不如计划 A 高效)单个事务中有 5001 个 UPDATE 语句 (BEGIN...COMMIT)

计划 C:(非常慢)autocommit=1,但没有 BEGIN..COMMIT

没有人有“内存”问题。不过,建议将 innodb_buffer_pool_size 设置为可用 RAM 的 70% 左右。

如果所有必要的 block 都被缓存(可能是几十 block 或几千 block ),那么计划 A 或 B 可能需要几秒钟。计划 C 可能需要几分钟的时间,具体取决于某些 innodb 设置。

SELECT 不应受到任何方法的太大影响。由于行级锁的交互,可能会产生一些影响。您可能不会注意到这种影响。

关于具有许多更新的 MySQL 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29240194/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com