SQL Server自動更新統計信息的基本算法

最初接觸SQL Server的時候認為SQLServer數據更改的同時就會相應的更新統計信息,其實SQL Server不是這樣做的.基于性能考慮,SQL Server使用下面的算法更新統計信息

自動更新統計信息的基本算法是:

· 如果表格是在 tempdb 數據庫表的基數是小于 6,自動更新到表的每個六個修改。
· 如果表的基數是大于 6,但小于或等于 500,更新狀態每 500 的修改。
· 如果基數大于 500,表為更新統計信息時(500 + 20%的表)發生了更改。
· 表變量為基數的更改不會觸發自動更新統計信息。

注意:此嚴格意義上講,SQL Server 計算基數為表中的行數。

注意:除了基數,該謂語的選擇性也會影響 AutoStats 生成。這意味著該統計信息可能無法更新的 afer 每 500 修改基數是 500。比例因子(值的范圍從 1 到 4、 1 和 4 之間)上生成根據選擇性,這一因素的更改從算法獲得數的乘積 AutoStats 生成所需的修改的實際數目。

在表的窗體中,可以summarised 以上算法:
_________________________________________________________________________________
Table Type | Empty Condition | Threshold WhenEmpty |Threshold When Not Empty
_________________________________________________________________________________
Permanent | = 500 | # of Changes >=500 + (20% of Cardinality)
___________________________________________________________________________
Temporary | = 6 | # of Changes >=500 + (20% of Cardinality)
___________________________________________________________________________
Table
Variables | Change in cardinality does not affectAutoStats generation.
___________________________________________________________________________

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享