postgresql中的自动调整列统计信息目标


正如postgresql文档所指出的,提高查询性能的一种方法是增加某些列的统计目标。已知CCD_ 1值对于具有不规则值分布的大表(几百万行(是不够的。为每一列创建一个用于自动调整统计目标的脚本是非常实用的,我想知道在编写这样的脚本时可能会遇到什么障碍,以及为什么我在网上找不到这样的脚本。

这是因为它没有那么简单。它主要不取决于表的大小,而是取决于表中的数据及其分布、修改数据的方式,最重要的是取决于查询。

因此,从持久状态来看,几乎不可能做出这个决定,即使有了更多的信息,也需要相当多的人工智能。

PG计划器统计信息的一个问题是无法计算表内所有行的统计信息。PG总是使用表格的一小部分来计算统计数据(样本百分比(。这种方式在大表中有一个巨大的缺点:它将忽略一些重要的值,这些值在估计执行计划的某些操作的基数时会产生影响。这可能会导致使用不适当的算法。

说明:http://mssqlserver.fr/postgresql-vs-sql-server-mssql-part-3-very-extremely-detailed-comparison/

特别是§12–Planer统计

PG不接受";全扫描";stat,是因为它需要太多的时间来计算!事实上,PostgreSQL在许多维护任务中(如统计数据重新计算(都很慢,正如我在这里揭示的那样:http://mssqlserver.fr/postgresql-vs-microsoft-part-1-dba-queries-performances/

在其他一些RDBMS中,可以执行UPDATE STATISTICS。。。与FULLSCAN(以Microsoft SQL Server为例(相比,这不需要花费太多时间,因为MS SQL Server与PostGreSQL无法执行的多个线程并行执行…

结论:PostGreSQL从来不是为巨大的表而设计的。如果您想处理大表并具有性能,请考虑使用另一个RDBMS。。。

只需看看PostGreSQL与MS SQL Server相比的COUNT性能:http://mssqlserver.fr/postgresql-vs-microsoft-sql-server-comparison-part-2-count-performances/

最新更新