我的postgres-xl版本是9.5r1.5稳定。当查询如下
SELECT * FROM tests t1 LEFT JOIN tests t2 ON t1.id1 = t2.id2 WHERE t1.id1=10000;
这个查询很简单,只返回一行。当我在数据节点中运行它时,只花费10毫秒。但是在coord节点中花费10020毫秒。我曾尝试过其他一些查询,并确保在加入同一个表coord节点时花费10秒。但是如果查询没有返回任何内容,则在coord节点中仅花费20ms。所以我认为,当coord节点组合数据时,它出了问题。任何人都可以告诉我如何避免这种情况。非常感谢。
也尝试类似“SET work_mem ='256MB'; SET LOCAL work_mem ='256MB';”。增加排序和真空的默认内存。
对于https://dba.stackexchange.com而言,这更是一个问题,事实上,someone had the same problem there。
你可以在链接的问题上看到my answer,这是一个简短的总结:
这是一个postgres-xl错误,它是在使用行重新分配计划和执行的查询上触发的,并且某些节点没有任何行。
您可以通过更改查询,更改表分发或添加数据来解决此问题。您可以使用
EXPLAIN
检查您的查询是否涉及数据重新分发。