我有一个程序,可以运行大约 100M 的选择和插入。
在 N 条语句之后关闭并重新打开游标有什么好处吗?或者我应该只在开始时打开它一次,然后在最后关闭它?
两个选项:
def connect(self):
if self.conn:
self.conn.close()
self.conn = MySQLdb.connect (...)
self.cursor = self.conn.cursor()
1)
self.connect()
# all statements
self.conn.close()
2)
self.connect()
for num, sql_statement in enumerate(sql_statements):
if num == N:
self.connect()
# sql statement
self.conn.close()
使用第二条路线有什么优势吗?这两个选项有什么区别吗?
最佳答案
一般来说,您希望使连接保持事件状态的时间尽可能短,但打开和关闭连接会对性能产生影响。
如果您作为一批排序按顺序运行多个查询,则对整个批处理使用一个连接(您的第一个场景)。
但是,如果语句是离散事务,那么我认为最好的方法是打开和关闭每个语句的连接。
当然,我的最后一句话没有考虑对应用程序的预期性能的性能影响。
关于python - 何时关闭/打开 MySQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25750872/