MySQL事务有很多更新

时间:2015-03-24 18:29:07

标签: mysql transactions innodb

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

这些大型交易对内存的影响是什么? 在交易运行时选择数据会有什么重大问题吗?


修改

  • 表是innodb
  • 这是1 + 5000updates
  • 并且记录按索引的列进行更新

感谢您的回答。

1 个答案:

答案 0 :(得分:0)

计划A:2 UPDATE个陈述 - 1表示零,1表示其他5000.但也许这不实用?

计划B :(效率不如计划A)单个交易中的5001 UPDATE个语句(BEGIN...COMMIT

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

没有“记忆”问题。但是,建议将innodb_buffer_pool_size设置为可用 RAM的大约70%。

如果缓存了所有必需的块(可能是几十个块或几千块),那么计划A或B将花费几秒钟。计划C可能需要几分钟,具体取决于一些innodb设置。

SELECT不应受到任何方法的影响。由于行级锁的交互,可能 可能没有注意到影响。