有没有办法估算ActiveRecord / Rails / Postgres的查询进度(例如75%)?或者,如果我要关闭ActiveRecord,有没有办法得到它?
答案 0 :(得分:1)
Postgres 没有直接的方法。
可以在 Hadoop 集群中使用 Hive 查询来完成,特别是当存在大量映射器和缩减器时,因为它是一个分区查询,当它完成时,它可以对它的进展有一些了解(虽然这种进展并不总是平滑的,因为并非所有数据都必须平均分配)。
在 Postgres 中,因为只有一个查询,所以(当前)没有分区来完成零碎并报告进度。如果你真的想要知道的话,我所知道的唯一方法就是strace
运行你的查询的 postgres 进程,看看它正在阅读哪些文件。由于磁盘上表的布局,这可以根据它的读取内容提供一些进步感。然而,对于完成百分比而言,这是间接关系,并且通常不值得麻烦,IMO。
一般来说,最好的办法是确保您的统计信息在相关表格中是最新的,然后查看查询计划,并尝试根据所说的内容推断相对复杂性/潜在执行时间。< / p>