Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql查询超时_Postgresql_Timeout_Geoserver - Fatal编程技术网

Postgresql查询超时

Postgresql查询超时,postgresql,timeout,geoserver,Postgresql,Timeout,Geoserver,我在Geoserver平台上,可以在数据库上使用参数化Sql视图。问题是,当查询非常长时,它会挂起整个系统,Geoserver或Postgresql都很难处理更多的数据 由于请求是硬连线的,因此很难按照惯例在每个会话的基础上设置查询超时。出于安全考虑,在查询中包含另一个命令是不可能的,因此必须在外部执行 但是,我不希望整个postgresql模块有一个特定的超时(正如我在配置文件中已经做的那样,将查询超时设置为30秒)。有没有办法设置只影响特定数据库而不影响整个服务器的查询超时?单个查询超过30

我在Geoserver平台上,可以在数据库上使用参数化Sql视图。问题是,当查询非常长时,它会挂起整个系统,Geoserver或Postgresql都很难处理更多的数据

由于请求是硬连线的,因此很难按照惯例在每个会话的基础上设置查询超时。出于安全考虑,在查询中包含另一个命令是不可能的,因此必须在外部执行


但是,我不希望整个postgresql模块有一个特定的超时(正如我在配置文件中已经做的那样,将查询超时设置为30秒)。有没有办法设置只影响特定数据库而不影响整个服务器的查询超时?

单个查询超过30秒,而许多不同的会话可以同时执行,这听起来不是很理想。您使用的是什么版本的PostgreSQL?如果是9.3或更高版本,我会研究。另外,您是否有适当的索引,是否检查了查询是否已优化?是的,该查询是一种非常特殊的查询类型,需要省略。例如,拥有一个包含500个条目的表,并尝试从表的联接中选择所有条目。我尝试过使用索引,但是select非常简单,当缺少where子句时,它似乎不会加快任何速度。使用where子句时,查询会在一秒钟内返回。我将检查物化视图,但geoserver似乎不允许我朝这个方向更改任何内容。如果您
join
某种东西,即使是它本身的一个表,那么索引可能非常有用。在测试查询效率时,是您的朋友。500行听起来一点也不复杂,如果GeoServer和PostgreSQL在同一台机器上,这也不应该是数据大小问题。这不完全是表上的正常连接。就像一个左连接。我需要元素之间的所有组合。基本上,我运行以下查询“select c0,the_geom,c2,the_geom from“natura”c0,natura“c2”,它运行了30秒。explain显示嵌套会导致麻烦,其中“嵌套循环(成本=0.00..60635.41行=175561宽度=34060)”索引在ID上,或其他列似乎没有帮助,但我不知道show我无论如何都应该优化它。如果它不可优化,我只需要为这些奇怪的查询设置一个超时,其中子句无效,这是一个
交叉连接
,而不是一个
左外
连接。据我所知,你不能设置一个查询,甚至会话的超时,坦率地说,那将是一个坏主意。你为什么不试着解决这个问题呢?您真的需要同时使用所有这些组合吗?也许您可以尝试预归档几何图形,只选择与当前查看范围相交的几何图形。另外,我认为这不是数据库问题,请尝试对该查询执行
COUNT(*)
。可能是GeoServer需要大量时间来渲染所有这些几何体。