运行 Python MySQL 连接提交的最佳时间()
Optimal time to run Python MySQL connection commit()
我是运行以下Python代码(简体):
db = mysql.connector.connect(**dbconfig)
cur = db.cursor()
for row in dataFrame:
cur.execute(INSERT [TABLE NAME] column, VALUES ({row}))
db.commit() # should this be inside or outside the loop?
我的问题是,根据 .commit() 语句是在循环内(运行每次迭代)还是在循环外(在所有 .execute 语句之后运行),我是否会期望性能有所不同。
这两种方法似乎都可以正常工作,我看不出在处理少量数据(< 100 行)时性能有任何差异。最终,我将处理更多的行,所以我想现在就得到它,因为我希望它会有所作为。
视情况而定。
COMMIT
需要一些时间;更多提交 = 花费更多时间。
另一方面,您在单个事务中放入的东西越多,该事务花费的时间就越长,它干扰其他进程的时间也就越长。而且死锁的几率更大。
在大多数情况下,将需要“原子地”运行 或失败的语句组合在一起。这就是交易的目的。如果您最终遇到性能或死锁问题,那么我们应该仔细研究细节来决定要做什么——具体情况具体分析。
我是运行以下Python代码(简体):
db = mysql.connector.connect(**dbconfig)
cur = db.cursor()
for row in dataFrame:
cur.execute(INSERT [TABLE NAME] column, VALUES ({row}))
db.commit() # should this be inside or outside the loop?
我的问题是,根据 .commit() 语句是在循环内(运行每次迭代)还是在循环外(在所有 .execute 语句之后运行),我是否会期望性能有所不同。
这两种方法似乎都可以正常工作,我看不出在处理少量数据(< 100 行)时性能有任何差异。最终,我将处理更多的行,所以我想现在就得到它,因为我希望它会有所作为。
视情况而定。
COMMIT
需要一些时间;更多提交 = 花费更多时间。
另一方面,您在单个事务中放入的东西越多,该事务花费的时间就越长,它干扰其他进程的时间也就越长。而且死锁的几率更大。
在大多数情况下,将需要“原子地”运行 或失败的语句组合在一起。这就是交易的目的。如果您最终遇到性能或死锁问题,那么我们应该仔细研究细节来决定要做什么——具体情况具体分析。