SQL Server 自動(dòng)更新統(tǒng)計(jì)信息的基本算法 |
發(fā)布時(shí)間: 2012/9/7 17:06:53 |
最初接觸SQL Server的時(shí)候認(rèn)為SQLServer數(shù)據(jù)更改的同時(shí)就會(huì)相應(yīng)的更新統(tǒng)計(jì)信息,其實(shí)SQL Server不是這樣做的.基于性能考慮,SQL Server使用下面的算法更新統(tǒng)計(jì)信息。 自動(dòng)更新統(tǒng)計(jì)信息的基本算法是: · 如果表格是在 tempdb 數(shù)據(jù)庫(kù)表的基數(shù)是小于 6,自動(dòng)更新到表的每個(gè)六個(gè)修改。- · 如果表的基數(shù)是大于 6,但小于或等于 500,更新?tīng)顟B(tài)每 500 的修改。 注意:此嚴(yán)格意義上講,SQL Server 計(jì)算基數(shù)為表中的行數(shù)。 注意:除了基數(shù),該謂語(yǔ)的選擇性也會(huì)影響 AutoStats 生成。這意味著該統(tǒng)計(jì)信息可能無(wú)法更新的 afer 每 500 修改基數(shù)是 < 500 或更改的每個(gè) 20%的基數(shù)好像 > 500。比例因子(值的范圍從 1 到 4、 1 和 4 之間)上生成根據(jù)選擇性,這一因素的更改從算法獲得數(shù)的乘積 AutoStats 生成所需的修改的實(shí)際數(shù)目。 在表的窗體中,可以summarised 以上算法: _________________________________________________________________________________ Table Type | Empty Condition | Threshold WhenEmpty |Threshold When Not Empty _________________________________________________________________________________ Permanent | < 500 rows | # ofChanges >= 500 | # of Changes >=500 + (20% of Cardinality) ___________________________________________________________________________ Temporary | < 6 rows | # ofChanges >= 6 | # of Changes >=500 + (20% of Cardinality) ___________________________________________________________________________ Table Variables | Change in cardinality does not affectAutoStats generation.
本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |