我有一个程序可能运行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()
使用第二条路线有什么好处吗?这两个选项有什么区别吗?
答案 0 :(得分:2)
通常,您希望在尽可能短的时间内保持连接处于活动状态,但是对打开和关闭连接会产生性能影响。
如果您按顺序运行多个查询作为一批排序,则对整个批次使用一个连接(第一个方案)。
但是,如果语句是离散事务,那么我认为最好的方法是打开和关闭每个语句的连接。
当然,我的上一份声明并未考虑到您的应用程序的预期性能对性能的影响。