我們有一個應用程序(規則引擎),它在內存中有很多表來執行特定的業務規則。此引擎還用於在需要時寫回數據庫。內存數據高速緩存在.Net應用程序中的性能
數據庫結構是非規範化的,我們有5個事務表,有時還需要查詢報表。
這裏的問題是,我們想要緩存應用程序中的數據,所以它在App啓動時加載,然後只在DB更改時纔會更改。
有什麼建議嗎?
我們傾向於創建一個數據庫服務,它將處理所有插入,更新和刪除操作,並將它們排隊以減少數據庫服務器上的負載(事務表也具有負載索引)。此外,我們正在考慮將數據庫服務放在最前面,並提供所有需要直接訪問數據庫的報告/其他應用程序。
這裏的目的是減少每個請求的Select查詢的DB命中數,並優先處理事務。此外,爲了確保訪問應用的用戶不會關閉數據庫服務器。
規則引擎是一個C#桌面應用程序,報告和其他應用程序是基於Web的。
什麼是最好的方式去做這件事?我也想過從我的事務表中刪除所有索引,並將觸發器插入到一個新的表中,該表是一個副本,但是索引用於報告檢索。
你試圖解決什麼問題?目前的性能痛點是什麼? – 2010-08-26 06:19:24
繪製點爲: 1.表鎖定問題與太多的寫/讀來自同一個表。 2.數據檢索在檢查每個業務事務的規則時很慢,規則基於DB中的其他表,因此對於每個業務事務,這可能意味着對5個不同表的5個不同選擇查詢。爲相同的表查詢SQL服務器只是我想避免的一個成本。 3。上面#2中提到的數據可能會改變,並且輪詢/數據緩存過期似乎並不「優雅」 – 2010-08-26 06:37:12