2016-06-16 62 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

回答

相關問題