【问题标题】:What is the best practice for closing sql connections?关闭 sql 连接的最佳做法是什么?
【发布时间】:2016-06-16 16:56:05
【问题描述】:

比如说,服务器有数千个请求表单客户端,用于同时处理他们的数据包并保存到数据库。

脚本必须对每个数据包进行一些(比如说 6 个)sql 查询。

目前,脚本只打开一次 sql 连接,并在处理完每个数据包后关闭它。所有查询都在打开和关闭数据库连接之间运行。

class Processor:
    def __init__(self, data):
        self.data = data

    def open_sql_connection(self):
        "connection commands, strings etc"

    def insert_to_db(self, table, data):
        "inserting data to table of the database"

    def close_sql_connection(self):
        "disconnecting from database"

    def process()
        self.open_sql_connection()
        "begin data process"
        .....
        self.insert_to_db(table_1, some_of_data)
        "continue to data process"
        .....
        self.insert_to_db(table_2, some_of_data)
        "continue to data process"
        .....
        self.insert_to_db(table_3, some_of_data)
        self.close_sql_connection()

如果我在查询出现之前让脚本打开 sql 连接,并在每个查询完成后立即关闭它,我会获得什么好处。比如加快速度、减少表的繁忙和避免锁定等。

class Processor:
    def __init__(self, data):
        self.data = data

    def open_sql_connection(self):
        "connection commands, strings etc"

    def insert_to_db(self, table, data):
        "inserting data to table of the database"

    def close_sql_connection(self):
        "disconnecting from database"

    def process()
        "begin data process"
        .....
        self.open_sql_connection()
        self.insert_to_db(table_1, some_of_data)
        self.close_sql_connection()
        "continue to data process"
        .....
        self.open_sql_connection()
        self.insert_to_db(table_2, some_of_data)
        self.close_sql_connection()
        "continue to data process"
        .....
        self.open_sql_connection()
        self.insert_to_db(table_3, some_of_data)
        self.close_sql_connection()

【问题讨论】:

  • 你的脚本是什么?这是一个如此广泛的问题,我们将需要更多的讨论。当您说“数千个数据包”时,您究竟是什么意思?
  • Sql-server 和 mysql 是两个不同的软件。你不应该同时标记它们。
  • @Aldrin Sql-server 标记已删除。我以为“Sql-server”是通用标签,不是软件。
  • 如果您的应用程序可以重用打开的连接,您将获得性能优势。连接操作太繁重。

标签: mysql


【解决方案1】:

连接不会锁定表。 最佳做法是在完成所有事务后打开连接并关闭它。

一个语句的一个连接会减慢应用程序的速度。

https://dba.stackexchange.com/a/16973

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多