MSSQL冗餘欄位的策略和管理

iSQlServer發表於2009-12-02
冗餘欄位的使用在多表聯合查詢都是大資料量的表的情況下,確實是個不錯的選擇,有效的減少了IO操作。但結合已有的專案產品來看,冗餘欄位確實是雙刃劍。尤其是大專案的開發,如果忽略某個表的冗餘欄位的更新,那麼後果是災難性的。如何有效的管理冗餘欄位是開發組內必須解決的問題。我的解決方案是:使用專門的表來管理冗餘欄位。例如article表有以下冗餘欄位

  fromUserName,toUserName

  如何管理這兩個欄位呢?通過建立一個表,表結構如下

  id,objTable,objName,sourceTable, sourceId,level,isUpdate

  其中objTable=目標表,objName= 目標欄位,sourceTable=源表,sourceId=源表ID,level=是否需要立即更新,isUpdate=是否已更新

  其中,level欄位很有必要,有些冗餘欄位並不需要在源表修改後立即更新,那麼可以通過一個定期更新策略來更新。

  通過庫表的管理,配合一個合理的儲存過程,冗餘欄位的使用將不再是難題。

  舉例,如果上面兩個欄位發生變化,則使用觸發器或者呼叫這個儲存過程來檢查是否有需要立即更新的冗餘欄位,需要則立即更新,不需要則isUpdate置0,等到週期性的策略來更新同時isUpdate=1。

  如果專案中使用了memcache,則還可以使用另一個思路來進一步減小資料庫IO操作。下篇再展開來說。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-621174/,如需轉載,請註明出處,否則將追究法律責任。

相關文章