NITS TIPS

~微塵集合知巧~

データベース接続の流れと仕組みの基本

最終更新日: 2024-08-22記事投稿日: 2024-08-22

nobumitsu-1995のgithubトップ

Frontend developer

nobumitsu-1995


データベース接続の基本

 データベース接続は、アプリケーションがデータベースと通信するための通路で、以下のステップが含まれます。

  1. ネットワーク接続の確立
  2. 認証
  3. セッションの初期化

この過程には一定の接続オーバーヘッドが伴うため、頻繁に接続を開いたり閉じたりすると、パフォーマンスに影響を与える可能性があります。

接続オーバーヘッド

 データベース接続の確立には時間がかかります。

コネクションプーリングを使用することで、この接続オーバーヘッドを最小限に抑え、アプリケーションのパフォーマンスを向上させることができます。

コネクションプーリング

 コネクションプーリング接続オーバーヘッドを最小限に抑えデータベース接続を効率的に管理するための技術で、

以下のような特徴を持ちます。

  • 事前に接続のプールを作成し、再利用する
  • 新規接続の作成オーバーヘッドを削減
  • リソースの効率的な利用を促進

重要なデータベース設定項目

  1. 最小接続数: プール内に常に維持される接続の最小数
  2. 最大接続数: プールが管理できる最大の接続数
  3. アイドル接続のタイムアウト: 未使用の接続(アイドル状態)が閉じられるまでの時間
  4. 最大接続持続時間: 接続が再利用される最大時間

アイドル接続のタイムアウト

 長時間使用されていない接続は、リソースの無駄遣いとなります。

アイドル接続のタイムアウトを設定することで、未使用の接続を自動的に閉じ、リソースを解放できます。

最大接続持続時間

 接続を長時間開いたままにすると、ネットワークの問題や他のリソースの競合が発生する可能性があります。

最大接続持続時間を設定することで、古い接続を定期的に閉じ、新しい接続に置き換えることができます。

適切な設定ができていない時に起こりうること

  • アイドル接続のタイムアウト時間が極端に長い場合

    接続の枯渇やリソースの浪費につながってしまいます。特にサーバーレス環境だとインスタンスが短命で頻繁にスケールアウトやスケールインが行われるため、スケーラビリティの問題が生じる可能性が高くなります。

  • アイドル接続のタイムアウト時間が極端に短い場合

    接続が頻繁に切断され、新たに接続を確立する必要があるため、接続オーバーヘッドの影響が大きくなり、パフォーマンスが低下してしまいます。

  • 最大接続持続時間が極端に長い場合

    不要な接続がリソースを占有し、データベースの接続数が上限に達する可能性があります。

  • 最大接続持続時間が極端に短い場合

    接続が頻繁に切断され、新たに接続を確立する必要があるため、接続オーバーヘッドの影響が大きくなり、パフォーマンスが低下してしまいます。


参考文献


関連記事

  • 最終更新日: 2024-07-20記事投稿日: 2024-07-20

    Golang + postgreSQL + redis環境をdocker-composeで構築する

    Golang + postgreSQL + redisの開発環境をdocker-composeを使用して構築したので備忘録として記事に残すことにしました。