On Wed, Jun 6, 2018 at 3:45 PM, Frits Jalvingh <jal@etc.to> wrote:
Hi Thomas,
I know that the message is about running out of memory, I just meant to say that it is a different message than before. Which led me to think that this might be another issue. But of course OOM can occur at many places and that might explain the different messages.
As far as that explain thing goes, the odd thing seems to be that /without/ the explain the database uses a non parallel plan. If I execute the exact same statement without explain I see one postgres process running at 100% for a long time, then it produces its output proper.
If I add the explain part to it I see three processes: the main process handling the EXPLAIN and two parallel workers. So the issue is that the explain plan actually uses another plan than the same statement without explain(!). This also explains the OOM, because indeed I see all processes gobble up memory like mad, growing to 12GB each and then it dies.
There is also possiblility that it might have planned to use parallel worker (which is shown in explain )but during actual execution it has not got any free background worker (other parallel sessions might be using all the workers).