何时关闭/打开MySQL连接

0 投票
1 回答
2398 浏览
提问于 2025-04-20 17:31

我有一个程序,大概会执行1亿次的选择和插入操作。

在执行了N条语句之后,关闭再重新打开游标(cursor)有没有好处?还是说我只需要在一开始打开一次,然后在最后关闭就行了?

有两个选择:

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()

使用第二种方法有什么好处吗?这两种选择之间有什么区别吗?

1 个回答

3

一般来说,你希望保持连接的时间尽可能短,但打开和关闭连接会影响性能。

如果你要一次性运行多个查询,可以用一个连接来处理整个批次(就像你提到的第一个情况)。

不过,如果每个操作都是独立的事务,那么我觉得最好的办法是为每个操作打开和关闭连接。

当然,我刚才说的并没有考虑到这对你应用程序性能的影响。

撰写回答