SQL Server中统计信息的默认样本大小是多少?


11

MSDN

如果(SAMPLE, FULLSCAN, RESAMPLE)未指定任何样本选项,则查询优化器默认对数据进行采样并计算样本大小。

如何确定统计数据的默认样本量?

我经历了MSDN,但没有找到任何公式或方法来标识默认样本大小。到处都只有公式可以触发自动统计信息更新。任何指针都会有所帮助。

Answers:


20

如何确定统计数据的默认样本量?

我会引用Blogs.msdn的文章

自动更新统计算法:

因此,表行中的每500 + 20%变化都会触发自动更新统计信息。当然,我们在SQL 2012中有一个改进的算法,它是SQRT(1000 *表行),效果更好。

触发时,它将使用默认的采样率,这是算法计算采样率的方法。

1)如果表<8MB,它将使用全扫描更新统计信息。

2)如果表> 8MB,则遵循算法。随着表中行数的增加,它会降低采样率,以确保我们不会扫描太多数据。这不是固定值,而是在优化器的控制下。它也不是线性算法。

例如:如果我们有1,000,000行,它将使用30%的采样率,但是当行数增加到8,000,000时,它将降低到10%的采样率。这些采样率不受DBA控制,但由优化程序决定。

为了进一步了解,我建议您阅读

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.