2010-04-27 70 views
0

我有一些數據未正確「分區」(缺少更好的單詞)。複製 - 在某些時間同步大部分數據

所有插入,處理和報告發生在同一張桌子上。大部分的處理過程發生在插入後不久,並且不久之後它變得不可變(我們正在談論幾天)。

我可以做一個新的表,我複製到舊錶的插入和處理。當我檢測到數據已變成不可變時,我會從新表中刪除數據,但我會編輯刪除複製存儲過程,以便刪除不會複製。

這個想法有多糟糕? < edit1>即編輯複製存儲過程。 < /編輯1>

它似乎有吸引力的時刻(我還沒有睡過它),因爲它可能會緩解性能問題,只需對應用程序進行非常小的更改。它似乎也可能是一個很好的方式來拍攝自己的腳。

EDIT1:

我喜歡插入兩個表,因爲我能避免視圖和城野的回答中描述的維護窗口的想法。沒有冒犯,喬諾,我實際上在其他地方使用這種技術。

我可能想使用複製,因爲一個表可能在另一個數據庫(我知道,我沒有提到這一點),這樣我就不必擔心提交到兩個表,我只是讓複製處理那。

我的實際擔憂(我沒有說清楚)是編輯複製存儲過程可能最終成爲部署/維護頭痛。

回答

1

我不會主張通過複製來解決性能問題(除非它是物理數據分佈的問題);如果有任何事情會在更改傳播到目的地時降低系統速度。如果您使用的是單個服務器,我建議添加第二個與第一個具有相同架構的表,但是您的索引會針對您在處理階段所做的工作進行優化。然後創建一個視圖,從兩個表中進行選擇,並在任何要查看兩個表的聯合的查詢中使用該視圖。然後,您可以在第二張桌子上投擲更多硬件(我正在考慮使用更多主軸的單獨文件組),然後在可用維護時段期間將數據每週延遲遷移到第一個表格中。

+0

我可以將其中一個表扔到另一臺服務器上,這就是爲什麼我認爲複製可能是我的解決方案的一部分。感謝您閱讀我措辭不佳的問題。 – 2010-04-27 23:04:50

+0

而不是編輯過程,爲什麼不編寫一些邏輯,它會在它試圖從行中發佈行之前,檢查某個共享狀態(您選擇的表中的行的值爲{「is_replication_enabled」,0})到目的地。您的刪除過程可以在啓動時將此值設置爲0,並在完成時將其設置回1。 – Jono 2010-04-28 08:28:32

相關問題