描述:我有一個事務表,每秒插入一個〜200(+ -100)行的平均值,本系統從中查詢以檢索數據基於客戶端ID,有/無時間(按升序排列)以及其他幾個條件。此表進行分區時,表格僅包含當天的數據,較早的數據存儲在< table_name_date_year>中。查詢在此表上運行以生成針對客戶的各種詳細報告。如何在內存緩存中存儲巨大的(Oracle)數據集
最近一次改進以提高性能,1)獲取表的最小值和最大值,2)並行查詢每50000條記錄表(每次只有5個記錄),運行查詢條件爲<>和< to>,直到達到最大值3)生成報告,4)合併報告。
問題:由數據庫開發人員完成各種查詢調優後,查詢仍然運行速度較慢(需要很長時間才能完成)。
是否可以使用像memcached或redis(或ehcache?)或「任何其他緩存框架」這樣的內存數據緩存來存儲/更新存儲在客戶端ID上的數據,以便報告系統獲取數據從緩存中生成報告,而不是直接從主數據庫查詢? (例如:< key,pair>,< client-id,{dataset}>)如果是這樣?
像HAZELCAST或兵馬俑或(我沒有探討太多這方面)或Apache Gora的bigdata實現可以在這裏使用嗎?如果是這樣如何?
基於Java的解決方案是否可以使用MappedByteBuffer
開發,但這樣做是否有效?
剛剛從數據庫加載數據還是數據庫以任何方式聚合/壓縮數據?在生成報告時,加載數據的訪問模式是什麼,例如是流式傳輸還是有很多點或範圍訪問?要處理的記錄有多大?記錄大小是多少?每個記錄是否有唯一的密鑰?記錄是否可以預先聚集或聚集,例如通過在15分鐘桶中存儲一個客戶的記錄?該技術是否能夠生成純java報告?報告生成POJO需要數據格式嗎? – cruftex