スレッドでデータベースをリクエストするのに時間がかかりすぎると感じる場合は、Python データベース接続プールを使用してこの点の欠点を改善できます。以下の記事を参照してください。 Python データベース接続プーリングについての理解を深める。
昨日、データベースをリクエストするために 500 個のスレッドを開いてテストしましたが、どのくらい時間がかかるかわかりません。つまり、非常に多くのスレッドを同時に起動するとどのような効率になるのでしょうか?そこで、データベース接続プール技術を使用することで、そのような接続操作を大幅に改善できるかどうかを考えました。しばらく整理した後、データの一部をテストします。データベース接続を頻繁に確立および終了する効率と接続プールのパフォーマンスの比較です。
1. DBUtils モジュールの学習
DBUtils は実際には 2 つのサブモジュールを含む Python パッケージで、1 つは DB-API 2 モジュールに接続するためのもので、もう 1 つは一般的な PyGreSQL モジュールに接続するためのものです。グローバル DB-API 2 変数
SteadyDB.py
データベース接続の安定化に使用
PooledDB.py
接続プール
PersistentDB.py
永続的なデータベース接続(永続接続)を維持します
SimplePooledDB.py
Simple接続プール PS: まず DB-API を抽出しましょう
基本サービスである PersistentDB と PooledDB を提供するために、最上位モジュールから 2 つのモジュールをインストールします。
DBUtils.PersistentDB は、DB-API 2 モジュールを使用して、堅牢でスレッドセーフな永続的なデータベース接続を実装します。次の図は、PersistentDB を使用する場合の接続層の手順を示しています。 DBUtils.PooledDB は、DB-API 2 モジュールを使用して、堅牢でスレッドセーフなキャッシュされた再利用可能なデータベース接続を実装します。次の図は、PooledDB を使用する場合のワークフローを示しています。
現在、PersistentDB と PooledDB の 2 つのモジュールから選択できます。どちらも、データベース接続を再利用してパフォーマンスを向上させ、データベースの安定性を維持するように設計されています。
python setup.py install
特定のモジュールの学習:
DBUtils.SimplePooledDB は、非常に単純なデータベース接続プールの実装です。本格的な PooledDB モジュールに比べて多くの機能が欠けています。 DBUtils.SimplePooledDB は、Webware のコンポーネントである MiscUtils.DBPool と本質的に似ています。デモ プログラムと考えることができます
DBUtils.SteadyDB は、DB-API 2 によって確立された元の接続に基づいて、「強力な」データベース接続を実装するモジュールです。 「ハード」接続とは、接続が閉じられた後、または操作数の制限が使用された場合に再接続されることを意味します。典型的な例としては、プログラムの実行中にデータベースが再起動され、データベースにアクセスする必要がある場合、またはプログラムがファイアウォールの背後にあるリモート データベースに接続し、ファイアウォールの再起動時に状態が失われる場合が挙げられます。
一般的に言えば、SteadyDB を直接使用する必要はなく、SteadyDB が引き継ぐだけです