ホームページ >バックエンド開発 >Golang >Go で行を挿入する際の PostgreSQL 接続の枯渇を回避するにはどうすればよいですか?

Go で行を挿入する際の PostgreSQL 接続の枯渇を回避するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-17 09:03:26866ブラウズ

How Can I Avoid PostgreSQL Connection Exhaustion When Inserting Rows in Go?

Go での行挿入のための PostgreSQL データベース接続の再利用

問題

Go プログラムで、 RabbitMQ から受信したメッセージごとに 1 つのデータベース接続を行うと、最大数を超えたためエラーが発生しました。

解決策

問題は、Go での SQL クエリの実行方法にあります。 sql.DB は、単一の接続ではなく、接続プールです。必要に応じて接続を開き、アイドル状態の接続を再利用しますが、この場合、接続は適切に解放されていません。

この問題は、返された *Row 値に対して Scan を呼び出さずに db.QueryRow を使用すると発生します。 *Row は接続への参照を保持し、Scan が呼び出されるときに自動的に解放されます。ただし、提供されたコードでは、Scan が呼び出されず、接続プールに接続が蓄積されてしまいました。

これを解決するには、出力が必要ない場合は db.Exec を使用します。または、db.QueryRow.

によって返された *Row 値に対して Scan を呼び出します。

以上がGo で行を挿入する際の PostgreSQL 接続の枯渇を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。