Go の世界では、コードを整理するのは困難な作業になることがあります。循環インポートおよびエクスポートされていないタイプは、簡単にフラストレーションを引き起こす可能性があります。データベースを操作するときに生じる重要な質問の 1 つは、次のとおりです。データベース接続の Close() メソッドを呼び出す必要がありますか?
Go では、データベース接続通常、database/sql パッケージを通じて処理されます。 sql.Open() 関数を使用して接続が開かれると、アイドル状態の接続のプールが作成されます。このプールはデータベース接続自体によって管理され、複数のゴルーチンによる同時使用が可能です。
データベースの公式 Go ドキュメントによると/sql package:
"返された DB は、複数のゴルーチンによる同時使用に対して安全であり、独自のアイドル プールを維持します。したがって、Open 関数は 1 回だけ呼び出す必要があります。DB を閉じる必要はほとんどありません。"
これは、ほとんどの場合、db.Close() を呼び出す必要がないことを意味します。プログラムが終了すると、接続は自動的に閉じられます。
データベース接続を閉じる必要は通常は必要ありませんが、閉じた方が望ましい特定のシナリオもあります。たとえば、プログラムが長時間実行されるタスクを処理する場合、またはリソースを明示的に解放する必要がある場合、プログラムが終了する前に接続を手動で閉じると有益な場合があります。
接続を閉じるには、CloseDB()関数はアプリケーション パッケージでエクスポートできます:
// App.go //... func CloseDB() error { return db.Close() }
この関数は次の場合に呼び出すことができます。望ましい:
// main.go //... func main() { // ... app.Setup() defer app.CloseDB() // ... }
ほとんどの場合、データベース接続を閉じるために db.Close() を呼び出す必要はありません。プログラムが終了すると、接続は自動的に閉じられます。ただし、リソース管理が重要な特定のシナリオでは、プログラムが終了する前に接続を手動で閉じると有益な場合があります。
以上がGo の Database/sql パッケージで db.Close() を呼び出す必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。