[英]Improve performance of database access
我有一個在端口上偵聽UDP數據報的應用程序。 我使用UDP入站通道適配器來偵聽此端口。 我的UDP通道適配器配置為使用ThreadPoolTaskExecutor調度傳入的UDP數據報。 在UDP通道適配器之后,我使用直接通道。 我的頻道只有一個訂戶,即一個服務激活器。
該服務將傳入消息添加到存儲在內存中的同步列表中。 然后,我有一個單線程,每5秒檢索一次列表的內容,並批量更新到MySQL數據庫。
我的問題:
堆大小不斷增長,並在一定時間后導致執行內存。
我正在嘗試尋找解決方案以提高應用程序的性能。
謝謝
每5秒存儲10,000條記錄對於任何數據庫而言都是相當可觀的。
您需要考慮其他選擇
意見建議
一種。 您真的需要一個同步列表嗎? 您是否不能有一組列表,比如說在這些列表之間划分工作,比如說對某個鍵的數據運行hashCode呢?
b。 您是否可以使用從列表中讀取信息的線程線程池(順便說一下,我將在此處使用隊列),這樣,當一個線程由於批量插入而被“卡住”時,其他線程仍可以讀取“作業”從隊列中執行它們?
C。 您的數據庫是否與應用程序共托管在同一台計算機上? 這樣可以提高性能
d。 您可以發布插入查詢嗎? 也許有人可以為您提供優化方法?
使用數據庫連接池,這樣您就不必等待任何一個線程上的提交。 只需抓住下一個可用的連接並進行並行插入即可。
我每秒在SQLServer表上獲得5.000次插入,但這需要進行很多優化。 沒有使用下面的所有提示,可能對您有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.