0
觸發我們有以下設置:SQL服務器更換爲與數據轉換
- 服務器SRV_1有兩個數據庫:OLTP數據庫DB_APP和報告數據庫DB_REP。
DB_APP具有多個其中做一些數據轉換觸發器(非規範化,使用連接到其它表,以匹配非規範化的數據)和插入/更新數據到DB_REP - SRV_1具有從DB_REP發佈數據
- 有事務複製在SRV_1一些工作,定期修改DB_REP基礎上的數據從DB_APP
- DB_REP不使用任何應用程序的數據,它只是用於複製的源
- 服務器SRV_2是認購DB_REP並使其可報告服務器給客戶。
問題是,DB_APP有少數表經常更新和觸發器使CPU負載非常沉重。最經常更新的表格之一每秒約有100次更新。
什麼是優化此設置的最佳方法?到目前爲止,我在想這樣的:
- 嘗試優化觸發器儘可能地(現在他們使用,如果存在檢查來執行插入/更新,我可以用MERGE替換)
- 創建索引視圖,而不是的觸發器和複製視圖從DB_APP到DB_REP
- 刪除觸發器,刪除DB_REP並使用複製存儲過程sp_msins_xxx直接從DB_APP發佈複製,實現數據轉換。我不確定是否可以在這些過程中查詢其他表格。以及如何處理工作?
問題是數據需要幾乎在線上可用,因爲它不僅被報告使用,而且被操作員(人員)用來監視實時數據。 – scar80
在這種情況下,我認爲你需要分開你的需求和每個使用的數據: *報告,需要轉換數據,但可能不需要實時可以使用DB_REP數據。 *直接從DB_APP實時監控實時數據,不需要昂貴的觸發器或轉換。 這就是我將如何處理這兩個要求。 – beercohol