SQL Server 2005:決定統計資訊更新時機的rowmodctr與colmodctr

lawzjf發表於2008-01-21

Rowmodctr (SQL Server 2000)

每個表都有一個 rowmodctr 與之相關聯。其值可從 sysindexes 系統表獲得。在表或索引檢視 T 的一個或多個列上建立的每個統計都有一個 rowmodctr 的快照值與之相關聯。無論該統計何時被更新——手動或自動(透過 SQL Server 的自動統計功能),rowmodctr 的快照值也會被重新整理。有關 rowmodctr 的詳細資訊在下方白皮書中有所描述:

rowmodctr 可在 SQL Server 2005 伺服器上使用,但其值總為 0

補充說明一下,在 SQL Server 2000 中,當 rowmodctr 0 時,將無法導致重新編譯。

Colmodctr (SQL Server 2005)

rowmodctr 不同,每個表列都會儲存一個 colmodctr 值(非永久性計算列除外)。同普通列一樣,永久性計算列擁有 colmodctr。使用 colmodctr 值,可以更細化地跟蹤表的更改。Colmodctr 值對使用者不可用;僅供查詢處理器使用。

當在表或索引檢視 T 的一個或多個列上(透過自動統計功能手動或自動)建立或更新統計時,最左邊一列的 colmodctr 的快照值將儲存在統計二進位制大物件 (stats-blob) 中。

rowmodctr 不同,colmodctr 的值是一個不斷遞增的序列:colmodctr 值從不被重置為 0

不存在非永久性計算列的 Colmodctr 值。其派生自參與計算的列。

[@more@]

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

相關文章