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()
你的腳本是什麼?這是一個如此廣泛的問題,我們需要繼續努力。當你說'數千個數據包'時,你到底意味着什麼? –
問題改進 –
Sql-server和mysql是兩個不同的軟件。你不應該標記他們兩個。 – Aldrin