我目前正在编写代码,通过普通的python脚本将一堆对象数据插入mysql数据库。我需要插入的行数大约是几千行。我希望能够尽可能快地做到这一点,并想知道在一堆fo行上调用executeMany()与调用commit()、vs多次调用execute()、然后调用commit()之间是否存在性能差异。
发布于 2020-05-04 00:17:24
一次执行所有操作并在流程结束时提交总是更有效。如果性能重要,commit会引发额外的处理,您不希望对每一行重复这些处理。
您执行的操作越多,性能效益就越大。另一方面,你需要考虑长期手术的副作用。例如,如果有多个进程同时插入,那么死锁的风险就会增加--特别是当出现重复的关键错误时。中间方法是分批插入。您可能想看看关于锁定机制的MYSQL文档。
MySQL文档中有一个关于语句的有趣部分--以下是一些选择:
load data语法是最快可用的选项。values()列表也比运行多个inserts要快得多发布于 2022-01-02 20:22:13
这里有一些提示:在/etc/ mysql /my.cnf (用于Ubuntu)中调优Mysql设置可以大大提高Mysql的性能。更多的memory+cache通常更适合查询。创建一个非常长的文本与许多插入查询和分号将大大提高你的速度。将整个数据库保存在内存中可以获得最大的速度,但不适合大多数项目。mysql调优技巧见:https://duckduckgo.com/?q=mysql+tune+for+speed&t=newext&atb=v275-1&ia=web。
https://stackoverflow.com/questions/61583247
复制相似问题