mysql MariaDB UPDATE中是否存在任何明显的瓶颈?

jei2mxaa  于 2023-11-16  发布在  Mysql
关注(0)|答案(1)|浏览(123)

我有一个包含2800万行的MariaDB表。我需要在一列中用一个新值更新所有行(本地)。下面是Python中用于批更新的代码:

update_query = "UPDATE table SET column = %s WHERE `index` = %s"
%time cursor.executemany(update_query, update_data)

字符串
column有一个索引,而index是主键。
当我使用一个100,000行的批处理时,运行executemany()需要50秒。我不确定这是非常慢还是正常的。如果它很慢,我不知道从哪里开始加速。

ctehm74n

ctehm74n1#

INSERT不同,executemany()不能自动批处理UPDATE查询,因此瓶颈是执行100,000个查询。
而使用INSERT INTO ... ON DUPLICATE KEY UPDATE ...。这将自动进行批处理。

update_query = 'INSERT INTO table (column, index) VALUES (%s, %s) ON DUPLICATE KEY UPDATE column = VALUES(column)'
%time cursor.executemany(update_query, update_data)

字符串

相关问题