Go での行挿入のための再利用可能な Postgres DB 接続: 接続プールの枯渇の解決
目的は、単一の再利用可能な Postgres データベース接続を使用することですGo での行挿入用。このエラーは、接続の処理が不適切なため、コードが誤って複数の接続を開いたことが原因で発生します。
Postgres の接続プール メカニズムである sql.DB は、単一の接続ではなく接続のキャッシュを維持します。 Postgres サーバーの最大接続制限まで、必要に応じて接続を動的に割り当てます。ただし、返された Row 値に対して Scan を呼び出さずに QueryRow を使用すると、接続は適切に解放されません。
Row オブジェクトは、内部的に Rows インスタンスを保持し、独自の接続を管理します。スキャンが呼び出された場合のみ、接続は自動的に解放されます。 Scan の呼び出しを怠ると接続が占有されたままになり、DB は後続の QueryRow 呼び出しで新しい接続を開くことになります。これは接続が解放されずに発生するため、プールが枯渇し、問題が発生します。
これを解決するには、次のいずれかのアプローチを採用できます。
これらの変更を組み込んだ改訂されたコード スニペットは次のとおりです。
これにより、接続が即座に解放され、DB 接続プールが枯渇することがなくなります。
以上がGo で行を挿入するときに Postgres 接続プールの枯渇を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。