Pரத*_*ீப் 12 sql-server statistics
从MSDN:
如果
(SAMPLE, FULLSCAN, RESAMPLE)
未指定任何示例选项,查询优化器默认对数据进行采样并计算样本大小。
如何确定统计的默认样本量?
我浏览了 MSDN,但没有找到任何公式或方法来确定默认样本大小。到处都只有公式来触发自动统计更新。任何指针都会有所帮助。
Sha*_*nky 20
如何确定统计的默认样本量?
我会引用旧文档文章
自动更新统计算法:
因此,自动更新统计数据将在表格行中每 500 + 20% 变化触发。当然,我们在 SQL 2012 中有一个改进的算法,它是 SQRT(1000 * Table rows),它要好得多。
当它触发时,它将使用默认采样率,这里是它如何计算采样率的算法。
Run Code Online (Sandbox Code Playgroud)If the table < 8MB then it updates the statistics with a
全扫描。
Run Code Online (Sandbox Code Playgroud)If the table > 8MB, it follows an algorithm. It reduces the
表中行数增加时的采样率,以确保我们不会扫描太多数据。这不是一个固定值,而是在优化器的控制之下。它也不是线性算法。
示例:如果我们有 1,000,000 行,它将使用 30% 的采样率,但是当行数增加到 8,000,000 时,它会将采样率降低到 10%。这些采样率不受 DBA 控制,而是由优化器决定。
要进一步了解,我建议您阅读
自动更新统计数据默认抽样测试Joe Sack
Erin Stellato更新统计数据的样本大小和持续时间
归档时间: |
|
查看次数: |
10953 次 |
最近记录: |