在没有锁定MySQL的情况下更新整个表

ska*_*adz 8 mysql locking

运行此更新语句将锁定表中的每一行5秒钟.

UPDATE `audio_clips` SET activity = activity * 0.95;
Run Code Online (Sandbox Code Playgroud)

有没有办法分批(在内部到mysql),或执行语句而不锁定?

这是一个用于显示网站上当前流行的字段的字段(如Reddit,Hacker News等).每当播放audio_clip时,活动就会被一个人撞到.我们会定期'衰减'每个剪辑的活动.只要每一行都被腐朽,我就不会为原子更新而烦恼.

ska*_*adz 1

最终我还是分批完成了。它可能无法完美扩展,但在 1000 条批量中,每条记录占用约 35 毫秒。整个过程每小时只需要10秒。

够好了。