【发布时间】:2018-07-01 09:14:30
【问题描述】:
我正在开发一个涉及不断插入 MySQL 数据库的数据收集应用程序。我正在使用 Python 和 PyMySQL 来完成此任务。我需要每秒在主表中插入大约 100 行。 python 进程不断运行并保持与位于远程服务器上的 MySQL 数据库的持续连接。
我知道,一般来说,最好将数据作为缓冲区插入(一次多行),而不是单独插入。每 100 次左右的插入进行提交(PyMySQL 中的connection.commit())是否会实现与一次插入大量数据相同的开销减少?
出于语法原因,将行插入分成单独的操作更容易。
【问题讨论】:
-
您是在谈论在事务上下文中执行此操作吗?如果没有,大多数驱动程序都会设置自动提交,因此每个语句都会自动提交,并且显式提交调用是多余的。您可以使用“multi-
INSERT”来执行此操作,或者如果速度是最重要的问题,则可以使用LOAD DATA INFILE从文件中读取数据。