2016-06-16 63 views
0

假设服务器拥有数千个请求表单客户端,用于处理他们的数据包并在同一时刻保存到数据库。关闭sql连接的最佳做法是什么?

该脚本必须为每个数据包做一些(比方说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() 
+1

你的脚本是什么?这是一个如此广泛的问题,我们需要继续努力。当你说'数千个数据包'时,你到底意味着什么? –

+0

问题改进 –

+0

Sql-server和mysql是两个不同的软件。你不应该标记他们两个。 – Aldrin

回答

相关问题