【发布时间】: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