确定最重要的表到ANALYZE

时间:2017-11-07 17:25:13

标签: postgresql-8.4 vacuum

基于这个(https://stackoverflow.com/a/13954487/1543618)对自动VACUUM FULL膨胀表的问题的答案,DBA(不再在这里工作)开发了一个脚本来确定哪些表 ANALYZE

  

注意:这是v8.4(是的,我知道它很古老,但我可以做到零   做到这一点),并有一个最小的维护窗口,所以VACUUM FULL似乎   不是解决方案。

这是确定哪些表需要预防性分析的有效方法吗?我有疑虑,因为相同的表日复一日地出现在查询中。

由于

1 个答案:

答案 0 :(得分:1)

假设你的意思是脚本与你引用的相同的check-if-there-bloat脚本相同,那么没有 - "垃圾"查询计划中不考虑元组,这意味着您可以根据需要重新分析,这对您没有好处。

ANALYZE处理估计各个SQL运算符将从给定表中产生的记录数,以及这些记录占用RAM的空间大小。然后,该信息用于比较解决相同逻辑查询的各种查询计划之间的成本(时间和内存)。

表中存在垃圾元组的事实不会影响查询返回的元组数,也不会影响正在使用的元组的大小。因此,重新分析表因为它们充满了垃圾是没有意义的。

此处ANALYZE的详细信息:https://wiki.postgresql.org/wiki/Introduction_to_VACUUM,_ANALYZE,_EXPLAIN,_and_COUNT