2016-08-16 2 views
0

私は、リクエストを受信して​​ターゲットに送信するjavaでサーバーアプリケーション(チャットサーバー側)をプログラミングしています。最適なパフォーマンスのためにRamテーブルまたはDBテーブルのテーブル

  1. 私は、データベース内の複数のテーブルを持っている、とサーバー アプリケーションの起動時には、私はにそれをプログラムするときを高速化するためにを(ラム中)のテーブルをマッピングする データベースのすべてのコンテンツをコピーしますプルアップするアプリケーションが実行中にデータをプッシュしてください。
    • これは正しい方法ですか?または、詳細が必要なときにデータベースから直接データを取り出すことを提案します。を削除し、RAMから<> テーブルを削除してください!
  2. メモリリークが発生します。
  3. データベースを操作するとアプリケーションが遅くなりますか?
+0

すべてのデータをメモリに格納すると、アプリケーションは多数のユーザーのために縮尺されません。アプリケーションについてより具体的にすることができます。アプリケーションがサポートする必要がある機能は何ですか?何人のユーザーですか?どのくらいのデータを期待していますか? ... –

+0

おかげさまで@skyWalker .... xmppに基づいてチャットサーバーを追加しました。追加された多くのエキストラ、ユーザー数300、メッセージペイロードは、12文字列フィールドです。アプリケーションはメッセージタイプ(カスタムフィールド)を読み込み、タイプ(20タイプ)でターゲットに渡します...更新:beginigのメモリステータス: 合計mem ... 21,457,403,904 free mem ... 21,398,745,256 MAX mem ... 32,194,822,144 – EsmaeelQash

答えて

0

メモリ内のすべてまたは一部のデータをキャッシュするかどうかは、ユースケースによって異なります。パフォーマンスを向上させることはできますが、必要のない複雑さが増します。

JVMに数百万または数十億のレコードをロードできますが、この目的またはデータベース用のデータストアなどのオフヒープストレージが必要です。ヒープ・メモリを使用すると、JVM内に何兆ものレコードを入れることができますが、これはめったに必要ありません。

+0

私はそれを行い、データのすべての変更に対処する:すべての変更でDBとテーブルを変更する.. ---私はRAMからのプルデータがDBからプルデータよりも速いと信じている - - 。これは本当ですか? – EsmaeelQash

+0

@EsmaeelQash適切なインデックスがあり、必要なデータがすべてロードされていれば、RAMはより高速です。 –

関連する問題