我在postgres上运行了一个巨大的查询,其中一个连接表总是进行顺序扫描。列上的索引存在,postgres只是没有使用它。我进行了真空分析,然后postgres查询计划立即更改为进行索引扫描。
我的问题是进行真空分析的最有效方法是什么。它锁定表吗?如果是这样,您如何真空分析实时生产表?
答案 0 :(得分:1)
您只能运行分析,也不需要运行真空。 Sintax将是:
ANALYZE [ VERBOSE ] [ table_name [ ( column_name [, ...] ) ] ]
在文件中说明:
ANALYZE requires only a read lock on the target table, so it can run in parallel with other activity on the table.
您可以在此处找到更多信息:
http://www.postgresql.org/docs/9.4/static/sql-analyze.html
https://wiki.postgresql.org/wiki/Introduction_to_VACUUM,_ANALYZE,_EXPLAIN,_and_COUNT