我需要知道一个特定的查询将运行多长时间(我预计运行时间很长)。为此,我决定在查询集上运行EXPLAIN ANALYZE
,其中只包含整个数据集的一部分,并从那里进行推断。但我有个问题;在连接超时之前,查询需要两个多小时,使我没有结果。我不想增加超时时间,因为我不知道可能运行多长时间(在两小时到两天之间)。
有没有什么方法可以让SQL服务器将数据输出到服务器文件系统上的一个文件中,这样我就不必担心超时了?我尝试了以下方法:
Copy (
EXPLAIN ANALYZE INSERT INTO <table>
<Long complex query here>
) To '/tmp/analyze.csv' With CSV;
字符串
但是我在EXPLAIN
处得到了一个错误。
为了记录,是的,我想做ANALYZE
,因为
- 它减少了以后要处理的数据量,并且
- 它给出实际时间估计。
3条答案
按热度按时间0yg35tkg1#
您可以简单地在
psql
中使用\o
将结果输出到文件中:字符串
\o
也可以通过管道传输到命令:查看this blog post,当然还有psql
documentation。m2xkgtsf2#
非常简单的技巧:
字符串
请注意,如果您不想真正修改数据,则应将其 Package 到事务中:
型
可能准备使用类似的功能已经存在,但我没有找到它。
PS:它将解决语法错误的问题,但我不确定它是否解决了超时问题,因为如文档中所述:
重要:请记住,使用ANALYZE选项时实际执行该语句。Link.
2w3rbyxf3#
您也可以使用JSON格式写入文件:
字符串
(All信用到@seb,我主要在这里回答,这样我就可以书签他们的回答)