質問: 現在、APIから情報を取得し、MySQLデータベースに保存するプログラムを書いています。ベースはpythonで、使用するドライバはmysql-connector-pythonです。 実行環境 ・DB: MySQL8.0 ・ドライバ: mysql-connector-python ・対象API: 仮想通貨取引所の価格データ そこで、DBとのコネクションの確立とクローズのタイミングについて疑問があります。 今回のAPIからデータを保存する流れでは、データ量が多いため、APIでデータ呼び出し->データ保存のサイクルを何度も回す流れになります。このとき、DBとのコネクションを確立させたままにして、APIからデータ取得->保存を繰り返すのが良いのか、または一回保存する度にコネクションの確立とクローズも一緒に行うのか、悩んでいます。 上記を整理した図は以下になります。 1. DBとのコネクション確立-> [API呼び出し->DBにデータ保存]を繰り返し ・・・コネクションは確立しっぱなし 2. [DBとのコネクション確立->API呼び出し->DBにデータ保存->DBとのコネクションクローズ]を繰り返し ググってみた限りでは、コネクションの確立とクローズは負荷が大きいので接続しっぱなしが良いという意見と、都度コネクションの確立とクローズをするのが一般的との2つの意見が出てきました。 ただ、それ以上の判断軸が判然としなかったので、こちらで質問させて頂きました。
回答: 開発しているプログラムがどのようなものか、どんな使われ方をするものか、といったところで判断材料は変わってくるかと思います。 サーバサイドプログラムでしたら、同時に使用するのが普通ですから、パフォーマンスを優先して、コネクションを使いまわしたほうがいいでしょう。 ユーザーアプリケーションでしたら、どの程度の頻度で、API実行、DBアクセスを繰り返すか で性能の影響は異なって来ると思います。たとえば、1秒間に何回 APIを実行するか(≒DBに書き込むか)を基準にして 考えてみてはどうでしょう。そうすると、1回あたりの API実行~DB書き込み までに 必要な処理時間がわかります。サンプルプログラムなどでその目標の性能が出せるか 検証することができます。