转载自官方中文文档
名称
ANALYZE -- 收集与数据库有关的统计信息
语法
ANALYZE [ VERBOSE ] [ table [ (column [, ...] ) ] ]
描述
ANALYZE 收集表内容的统计信息,然后把结果保存在系统表 pg_statistic 里。随后,查询规划器就可以使用这些统计帮助判断查询的最佳规划。
如果没有参数,ANALYZE 检查当前数据库里的所有表。如果有参数,ANALYZE 只检查那个表。你还可以给出一列字段名字,这个时候只收集那些字段的统计信息。
参数
VERBOSE
显示处理过程的信息
table
要分析的特定表(可能用模式名修饰)的名字。缺省是当前数据库里所有表。
column
要分析的特定字段的名字。缺省是所有字段。
输出
如果声明了 VERBOSE ,那么 ANALYZE 将发出进度信息,表明当前正在处理的是哪行。同时打印有关改表的很多其它信息。
注意
周期性地运行 ANALYZE ,或者在对表的大部分内容做了更改之后马上运行它是个好习惯,准确的统计信息将帮助规划器选择最合适的查询规划,并因此改善查询处理的速度。一种比较经常采用的策略是每天在低负荷的时候运行一次 VACUUM 和 ANALYZE 。
和 VACUUM FULL 不同的是,ANALYZE 只需要在目标表上有一个读取锁,因此它可以和表上的其它活动并发地运行。
ANALYZE 收集的统计信息通常包括每个字段最常用数值的列表以及显示每个字段里数据近似分布的包线图。如果 ANALYZE 认为它们都没有什么用(比如在一个拥有唯一约束的字段上没有公共的数值)或者是该字段数据类型不支持相关的操作符,那么它们都可以忽略。在章22中有关于统计的更多信息。
对于大表,ANALYZE 采集表内容的一个随机抽样做统计,而不是检查每一行。这样就保证了即使是在很大的表上也只需要很少时间就可以完成分析。不过,要注意的是统计只是近似的结果,而且每次运行 ANALYZE 都会导致 EXPLAIN 显示的规划器的预期开销有一些小变化,即使表内容实际上没有改变也这样。在很小的概率的情况下,这个不确定的行为会导致查询优化器在不同 ANALYZE 之间选择不同的查询规划。为了避免这个问题,可以提高 ANALYZE 收集的统计数量,像下面描述的那样。
分析的广度可以通过用调整 default_statistics_target 配置变量,或者是以每字段为基础通过用 ALTER TABLE ... ALTER COLUMN ... SET STATISTICS (参阅 ALTER TABLE)设置每字段的统计目标来控制。目标数值设置最常用数值列表中的记录的最大数目以及包线图中的最大块数。缺省的目标数值是 10 ,不过可以调节这个数值获取规划器计算精度和 ANALYZE 运行所需要的时间以及 pg_statistic 里面占据的空间数目之间的平衡。特别是,把统计目标设置为零就关闭了该字段的统计收集。这么做对那些从来不参与到查询的 WHERE, GROUP BY, ORDER BY 子句里的字段是很有用的,因为规划器不会使用到这样的字段上的统计。
在被分析的字段中最大的统计目标决定统计采样的行数。增大目标会导致 ANALYZE 的时候成比例地增大对时间和空间的需求。
兼容性
SQL 标准里没有 ANALYZE 语句。
http://blog.csdn.net/scutshuxue/archive/2010/12/14/6075511.aspx
分享到:
相关推荐
- 优化了`VACUUM`和`ANALYZE`操作,提高了数据库维护效率。 3. **Windows-x64版的考虑** - 针对64位系统的优化,使得能够利用更多的系统内存,处理大数据集更为高效。 - 安装程序`PostgreSQL-9.2.4-1-windows-x...
虽然两者对XML的支持有限,但在数据访问和管理方面,MySQL提供了如`OPTIMIZETABLE`命令和`myisamchk-analyze`工具,用于回收未使用的空间和更新查询优化器所需的统计数据。 综上所述,MySQL与PostgreSQL在数据库...
PostgreSQL is an incredibly flexible and dependable open source relational database. Harnessing its power will make your ...ecosystem used to analyze PostgreSQL logs, set up load balancing, and recovery.
3. 自动化维护:使用`VACUUM`和`ANALYZE`命令进行数据库维护,以保持良好的查询性能。自动化的`autovacuum`进程可以在后台执行这些任务。 三、后台编程 1. PL/pgSQL:PostgreSQL内置的事务级过程语言,用于编写...
- 查询优化:分析查询执行计划,使用EXPLAIN和EXPLAIN ANALYZE进行性能评估。 - 系统监控:通过pg_stat_activity、pg_stat_database等视图监控数据库状态。 - 资源调整:内存设置、工作线程、并行查询等参数的优化。...
在PostgreSQL数据库系统中,调试模式对于开发者和管理员来说是一个非常重要的工具,它允许深入到数据库引擎内部,以便诊断和修复各种问题。本文件“postgresql 调试模式文件”很可能是与使用PostgreSQL的内置调试...
13. **监控与调优**:学习如何监控数据库性能,使用VACUUM、ANALYZE、EXPLAIN等工具进行性能分析和优化。 14. **EXTENSION**:了解如何使用EXTENSION功能,安装和管理第三方模块,扩展PostgreSQL的功能。 这个中文...
PostgreSQL是一种开源的对象关系型数据库管理系统(ORDBMS),它以其强大的功能、高度的灵活性和稳定性赢得了广大开发者的青睐。这个“PostGreSQL资料.zip”压缩包文件包含了关于PostgreSQL查询优化的深入探讨,特别...
使用EXPLAIN和ANALYZE命令分析查询执行过程,检查是否存在全表扫描或者慢查询。根据查询计划的结果,可能需要调整索引类型或参数设置,如costs和statistics,以适应查询模式。 综上所述,优化PostgreSQL中的LIKE...
- VACUUM和ANALYZE命令用于清理数据库垃圾和更新统计信息,保持数据库高效运行。 **7. 开源社区支持** - PostgreSQL拥有活跃的开发者社区和用户群,提供及时的技术支持和丰富的学习资源。 - 社区不断推出新版本,...
同时,还包括了查询计划分析、VACUUM和ANALYZE命令的使用,以保持数据库性能。 **4. 并行查询** 9.6版本引入了并行查询功能,允许在多核处理器上并行执行某些查询操作,显著提高了大型数据集的处理速度。手册会解释...
- 使用VACUUM和ANALYZE优化数据库性能。 总之,PostgreSQL的安装并不复杂,但理解其工作原理和最佳实践是至关重要的。遵循这些步骤,你将能够成功安装并开始使用这个强大的数据库管理系统。在实际操作过程中,参考...
- 维护任务:介绍了定期执行的维护任务,如VACUUM、ANALYZE和REINDEX。 这份中文文档对于PostgreSQL初学者和经验丰富的DBA都是宝贵的资源,无论是在学习数据库理论还是在解决实际问题时,都能提供有力的支持。通过...
源码可能涉及创建、管理和优化这些索引来提升查询性能,如使用EXPLAIN ANALYZE命令分析查询执行计划。 3. **视图与物化视图**:源码可能包含创建和使用视图的例子,视图是虚拟的表,基于一个或多个表的查询结果。...
文档详细讨论了B树、哈希、GiST、SP-GiST、GIN和BRIN等不同类型的索引,以及如何通过EXPLAIN和ANALYZE命令来分析查询计划和优化性能。 **五、安全性与权限** PostgreSQL 11提供了强大的安全机制,包括用户管理和...
5. 通过对表进行批量 update 时,避免同时进行 autovacuum_analyze 操作。 二、PostgreSQL 数据库性能优化 PostgreSQL 数据库的性能优化是非常重要的,特别是在高并发情况下。下面是一些常见的性能优化方法: 1. ...
4. **性能优化**:嘉宾们可能分享了关于数据库性能优化的策略,如索引设计、查询优化、分区表、存储过程和触发器的使用,以及如何利用VACUUM和ANALYZE命令维护数据库性能。 5. **安全性与备份恢复**:在PostgreSQL...
- 使用`EXPLAIN ANALYZE`命令分析慢查询并优化索引结构。 - 调整`shared_buffers`、`work_mem`等配置参数以优化内存使用。 - 监控系统资源使用情况,并根据需要调整硬件配置。 ##### 2. **数据损坏** - **原因...