增加 default_statistics_target 值可以使您的数据库更快,特别是在分析之后....
阅读这篇文章我看到https://discuss.pivotal.io/hc/en-us/articles/201581033-default-statistics-target-Explained
(...) 简而言之,这个参数控制着统计数据的收集方式,值 1 是估计最少/准确的统计数据,值 1000 是最准确的统计数据,显然会消耗时间/资源(CPU、内存等)/空间。通常默认值足以获得准确的计划,但如果您有复杂的数据分布/或查询中经常引用一列,则设置更高的值可能有助于获得更好的表统计信息,因此优化器执行的更好计划。
这是一个很好的解释,但例如,如果我设置 default_statistics_target= 1000 1000 真正意味着什么?正在生成 1000 KB 的统计数据?或者它可能是分析的表的 1000 行?也许是 1000 列?或者每次分析可能需要 1000 秒...
所以我的问题是这个数字是如何真正影响分析或查询规划器的?很明显,我知道 default_statistics_target = 1000 将获得比 100 更多的时间,用于运行分析,并且 1000 将生成更好的统计数据......
jja*_*nes 19
它将300 * default_statistics_target
从每个表中采样行。它将使用该样本来确定default_statistics_target
要存储在该数组中的最常见值,以及default_statistics_target
要存储在该数组中的直方图边界。加上其他一些标量统计信息,例如不同值的数量。
选择乘数 300 是因为一些统计理论说,这是您希望计算的每个直方图边界需要采样的数量,以便您的采样直方图边界具有可接受的不确定性水平。
最常见的值列表用于帮助规划器预测等式表达式的选择性,例如where state='CA'
。直方图边界用于帮助规划器预测不等式或范围表达式的选择性,例如where income between 55000 and 64000
归档时间: |
|
查看次数: |
5668 次 |
最近记录: |