我正在使用Ruby on Rails 3.0.7和MySQL 5.在我的應用程序中,我有兩個數據庫表,比如TABLE1和TABLE2,並且出於性能方面的原因,我已經對TABLE2中的一些數據進行了歸一化處理, TABLE1的值。現在,在TABLE1中,我需要更新一些涉及的值,當然,我還必須正確更新TABLE2中的非規格化值。正在更新非規範化數據庫表
我能做些什麼來以高性能的方式更新這些值?也就是說,如果TABLE2包含很多值(1.000.000或更多),那麼更新這兩個表(技術,實踐...)的最佳方法是什麼?
更新數據庫表所需時間會發生什麼?例如,用戶在加入涉及那些非規範化值的某些網站頁面時可能會遇到一些問題?如果是這樣,那是什麼,我該如何處理這種情況?
您應該使用觸發器(或者兩個觸發器 - 每個表上一個觸發器(如果允許更新這兩個表)同步保留這些觸發器 - 以便在更改一個表時,更改會傳播到另一個表表。 – Flimzy
@Flimzy - 正如你所說,爲了更新大型表格會有很多工作......性能呢? – user502052
嗯,這意味着你每次更新兩張表時都會更新兩張表 - 所以表現可能大概是一半(取決於很多因素) - 但這就是你想要的,對吧?沒有保持數據一致所帶來的性能下降,就無法保證數據的一致性。現在,如果您的數據不必是實時一致的,您可能可以將傳播從一個表格傳輸到另一個表格,而不是每小時/每天/每週/其他,這可能會更有效,具體取決於您的情況。但根據你的問題中的信息,我不能說這是否適合你。 – Flimzy