2016-06-16 6 views
0

サーバーには、データパッケージを処理してデータベースに保存する要求フォームクライアントが数千もあります。SQL接続を閉じるベストプラクティスは何ですか?

スクリプトは、各データパッケージに対していくつかのSQLクエリを作成する必要があります。

今のところ、スクリプトはSQL接続を1回開いて、各データパッケージの処理が完了したら終了します。すべての照会は、オープンおよびクローズのデータ​​ベース接続間で実行されます。

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は2つの異なるソフトウェアです。両方にタグを付けるべきではありません。 – Aldrin

答えて

2

接続はテーブルをロックしません。 ベストプラクティスは、すべてのトランザクションを完了した後に接続を開いて閉じることです。

1つの文を1つ接続すると、アプリケーションの速度が遅くなります。

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

関連する問題