2016-08-16 63 views
0

我正在用java編程服務器應用程序(聊天服務器端),它接收請求併發送到目標。Ram或DB表中的表,以獲得最佳性能

  1. 我在數據庫中有幾個表,並服務器 應用程序啓動時,我把它編程爲複製 數據庫,以地圖(在RAM)表,以速度的所有內容向上拉
    • 當應用程序運行時推送數據。 這種正確的方法嗎?或者當我需要一個細節時,你建議我直接從數據庫中提取數據。並刪除地圖<> 表!
  2. 我忍受內存泄漏。
  3. 處理數據庫是否會降低應用程序的速度?
+0

如果您將所有數據放入內存中,應用程序將無法針對大量用戶進行擴展。您可以更具體地瞭解您的應用程序。應用程序需要支持哪些功能?有多少用戶?你期望得到多少數據? ... –

+0

謝謝@skyWalker ....它是基於xmpp的聊天服務器,我添加了許多額外功能,現在用戶數量爲300,郵件有效負載爲帶有12個字符串字段的地圖。應用程序讀取消息類型(自定義字段)並按類型處理(20種類型)ans傳遞給目標...更新:在beginig的內存狀態: 總的mem ... 21,457,403,904 空閒的內存... 21,398,745,256 MAX mem ... 32,194,822,144 – EsmaeelQash

回答

0

緩存內存中的全部或部分數據是否有意義取決於您的用例。它可以提高性能,但會增加可能不需要的複雜性。

您可以將數百萬甚至數十億條記錄加載到JVM中,但要做到這一點,還需要爲此目的或數據庫提供脫機堆存儲(如數據存儲)。使用非堆內存,您可以在JVM中擁有數萬億記錄,但這很少需要。

+0

我這樣做,並處理數據的每一個修改:修改數據庫和表中的每一個變化.. ---我這樣做因爲我相信從RAM拉數據比從數據庫拉數據 - - 。這是真的? – EsmaeelQash

+0

@EsmaeelQash如果您有合適的索引並且加載了所需的所有數據,則RAM更快。 –

相關問題