首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python ()和commit与许多execute()和commit

Python ()和commit与许多execute()和commit
EN

Stack Overflow用户
提问于 2020-05-04 00:06:59
回答 3查看 2.3K关注 0票数 1

我目前正在编写代码,通过普通的python脚本将一堆对象数据插入mysql数据库。我需要插入的行数大约是几千行。我希望能够尽可能快地做到这一点,并想知道在一堆fo行上调用executeMany()与调用commit()、vs多次调用execute()、然后调用commit()之间是否存在性能差异。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-04 00:17:24

一次执行所有操作并在流程结束时提交总是更有效。如果性能重要,commit会引发额外的处理,您不希望对每一行重复这些处理。

您执行的操作越多,性能效益就越大。另一方面,你需要考虑长期手术的副作用。例如,如果有多个进程同时插入,那么死锁的风险就会增加--特别是当出现重复的关键错误时。中间方法是分批插入。您可能想看看关于锁定机制的MYSQL文档

MySQL文档中有一个关于语句的有趣部分--以下是一些选择:

  • load data语法是最快可用的选项。
  • 使用多个values()列表也比运行多个inserts要快得多
票数 1
EN

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2020-05-04 00:31:32

在python中,它应该是无动于衷的,因为必须在插入数据之前对其进行压缩。

因此,执行和执行之间应该没有什么区别,但是正如所述的这里

mysql主页也是

使用executemany()方法,不可能在操作参数中指定要执行的多个语句。这样做会引发InternalError异常。考虑在multi=True中使用execute()。

因此,如果您对性能有疑问,您可以查看一下金炼金术似乎要快一些,但要让它开始工作需要时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61583247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档