Go Web API アプリケーションでは、さまざまな関数内でデータベース操作を実行するのが一般的です。通常、各関数はデータベースへの接続を開き、必要な操作を実行して、接続を閉じます。ただし、このアプローチは非効率的でリソースの無駄になる可能性があります。
より効率的なアプローチには、アプリケーションの起動時 (または最初の要求に応じて) 単一のデータベース接続を確立し、それをアプリケーション全体で再利用することが含まれます。これにより、接続を何度も開いたり閉じたりする必要がなくなり、データベースのオーバーヘッドが削減され、パフォーマンスが向上します。
このアプローチを実装するには、パッケージの init() 関数内で、またはパッケージの init() 関数内で sql.DB インスタンスを 1 回作成できます。アプリケーションが初期化されます。このインスタンスは、データベースにアクセスする必要がある関数にパラメータとして渡すことができます。あるいは、sql.DB インスタンスをグローバル変数にして、すべての関数からアクセスできるようにすることもできます。
sql.Open() ドキュメントによると、
The returned DB is safe for concurrent use by multiple goroutines and maintains its own pool of idle connections. Thus, the Open function should be called just once. It is rarely necessary to close a DB.
データベース接続が有効な場合は、接続を開いた後に DB.Ping() を使用できます。
func init() { var err error db, err = sql.Open("yourdriver", "yourDs") if err != nil { log.Fatal("Invalid DB config:", err) } if err = db.Ping(); err != nil { log.Fatal("DB unreachable:", err) } }
このアプローチに従うことで、過剰なデータベース接続を回避し、Go Web API アプリケーションの効率とスケーラビリティを向上させることができます。
以上がGo Web アプリケーションでデータベース接続を効率的に管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。