リソースを「高価」にするものは何ですか?


10

私は休止状態を読んでいて、「JDBC接続が複数の要求にわたって開かれているのは高価なリソースであるため、良いことではありません」などの文に出くわしました。

高価なリソースとはどういう意味ですか?

編集:不明なユーザーがコメントとして追加したものを以下に追加しています。

データベース接続の確立にコストがかかる場合は、データベースを閉じて毎回開くのではなく、同じものを(キャッシュではなく)何度も使用しないでください。


2
高額とは、指定した方法で頻繁に使用したり、使用しない場合に及ぼすことを意味します。
アレクサンダーゲスラー、

回答:


20

高価なリソースは次のようなものです。

  • 作成/初期化に時間がかかります。データベース接続では、ハンドシェイクが完了するまでに1〜2秒以上かかることがあります。
  • 大量のメモリを使用します。完全なファイルアップロードをメモリ内のバイト配列に読み込んでから保存すると、短時間でかなりの量のメモリが消費されます。
  • 多くのCPUサイクルを使用します。大量のデータコレクションの計算は、計算の実行中にCPUに負荷をかける可能性があります。

高価なリソースはそれぞれ、スケーラビリティの問題を引き起こす可能性があります。要するに、これらの高価な操作の多くを同時に発生させることはできません。そうしないと、ユーザーに十分に迅速に応答することができなくなります。


私は同意したいのですが、@ Sunの例と矛盾することを指摘しなければなりません。接続の設定にはコストがかかるため、接続を開いたままにしておきます。
ユーザー不明

2
この特定のケースで私が明確にしましょう:何かが作成/初期化に時間がかかる場合、そのリソースを作成/初期化する回数を制限したいです。データベース接続は、開いている間は多くのリソースを必要としないため、これらのリソースをプールすることをお勧めします。
Berin Loritsch

5

特定のリソースに依存するさまざまなことができます。したがって、次のようになる可能性があります。

  • 動作に必要なメモリの量。
  • 接続にかかる時間。
  • その接続を維持するためのオーバーヘッド。

等々。

何かが高価になる可能性がある他の事柄は、操作中にハードドライブまたはネットワークへのアクセスが必要な場合などです。


2

高価な接頭辞には「computationally」を付ける必要があります。計算上の費用は、操作、アルゴリズム、またはプログラムを完了するために必要な時間またはリソース(CPU、メモリ、ディスク、ネットワーク帯域幅)を指すために使用されます。


2

データベース接続の費用は、いくつかの要因から生じます。

  • データベース接続はセットアップに時間がかかり、クライアント側とサーバー側のリソースが必要です。これが、接続がプールされる理由です。
  • オープントランザクションにはオーバーヘッドがあり、クライアントとサーバーの両方による管理が必要です。
  • 開いているトランザクションは他の更新をブロックする場合があります。これにより、全体的なパフォーマンスが低下します。

つまり、トランザクションがACIDテストに合格することを確認するために、接続(または少なくともトランザクション)を開いたままにしておく必要があります。(原子一貫性のある耐久性)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.