行の挿入のために Go で単一の Postgres DB 接続を再利用する
データベース操作の分野では、一般的なタスクの 1 つは行の挿入です。テーブルに。データベースのパフォーマンスを最適化するには、単一の接続を確立し、それをすべての挿入操作で再利用することが重要です。このアプローチにより、多数の接続を開くオーバーヘッドが回避され、効率的なデータベース操作が確保されます。
問題: 過剰な DB 接続を開く
使用して Postgres テーブルに複数の行を挿入しようとすると、挿入操作のたびに新しい接続を開かないようにすることが重要です。コードが次のような場合:
db, err := sql.Open("postgres", "connectionURL") if err != nil { log.Fatal(err) } for i := 0; i < 10; i++ { // Insert row _, err := db.Exec("INSERT INTO table VALUES (...)") if err != nil { log.Fatal(err) } }
複数の接続を開くという問題が発生します。これは、db 変数が単一の接続ではなく接続プールであるためです。 Exec を呼び出すたびに、新しい接続が開かれ、プールに追加されます。
解決策: 単一の接続を再利用する
単一の接続が確実に使用されるようにするには複数の挿入を行う場合は、次の変更を行う必要があります:
修正されたコードは次のようになります。
var db *sql.DB func init() { var err error db, err = sql.Open("postgres", "connectionURL") if err != nil { log.Fatal(err) } if err = db.Ping(); err != nil { log.Fatal(err) } } func main() { for i := 0; i < 10; i++ { // Insert row _, err := db.Exec("INSERT INTO table VALUES (...)") if err != nil { log.Fatal(err) } } }
これらの変更を実装すると、効果的に再利用できます。すべての挿入操作に単一の Postgres DB 接続を使用することで、過剰な接続を開く問題を排除し、データベース効率を最大化します。
以上が効率的な行挿入のために Go で単一の Postgres DB 接続を再利用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。