我目前正在编写代码,通过普通的python脚本将一堆对象数据插入mysql数据库。我需要插入的行数大约是几千行。我希望能够尽可能快地做到这一点,并想知道在一堆fo行上调用executeMany()与调用commit()、vs多次调用execute()、然后调用commit()之间是否存在性能差异。
发布于 2020-05-04 00:17:24
一次执行所有操作并在流程结束时提交总是更有效。如果性能重要,commit会引发额外的处理,您不希望对每一行重复这些处理。
您执行的操作越多,性能效益就越大。另一方面,你需要考虑长期手术的副作用。例如,如果有多个进程同时插入,那么死锁的风险就会增加--特别是当出现重复的关键错误时。中间方法是分批插入。您可能想看看关于锁定机制的MYSQL文档。
MySQL文档中有一个关于语句的有趣部分--以下是一些选择:
load data语法是最快可用的选项。values()列表也比运行多个inserts要快得多https://stackoverflow.com/questions/61583247
复制相似问题