Re: pg_dump out of memory for large table with LOB - Mailing list pgsql-general

From Adrian Klaver
Subject Re: pg_dump out of memory for large table with LOB
Date
Msg-id 85859f38-242a-3ad8-8fc6-7194a0d09218@aklaver.com
Whole thread Raw
In response to Re: pg_dump out of memory for large table with LOB  (Ron <ronljohnsonjr@gmail.com>)
List pgsql-general
On 11/10/18 2:46 PM, Ron wrote:
> On 11/09/2018 05:49 PM, Jean-Marc Lessard wrote:
>>
>> I am running PostgreSQL 9.6.5 on x86_64-pc-mingw64, compiled by 
>> gcc.exe (Rev5, Built by MSYS2 project) 4.9.2, 64-bit
>>
>> on win2012 with 12Gb RAM
>>
>> The dumped table is 0.5TB, 17 million rows and LOB uses about 99% of 
>> the space.
>>
>> The pg_dump consumes the entire system memory and swap, then 
>> terminates with out of memory error
>>
>> Is it a bug or normal behavior?
>>
>> If I do not include LOB in the dump, it works fine.
>>
>> Here is the dump output:
>>
>> C:\Users\Administrator> pg_dump -h localhost -Fc -a -b -t signatures 
>> -v > d:\postgresql\sig.dmp
>>
>> pg_dump: last built-in OID is 16383
>>
>> ...
>>
>> pg_dump: reading row security enabled for table "ibisl1.signatures"
>>
>> pg_dump: reading policies for table "ibisl1.signatures"
>>
>> pg_dump: reading large objects
>>
>> pg_dump: reading dependency data
>>
>> pg_dump: saving encoding = UTF8
>>
>> pg_dump: saving standard_conforming_strings = on
>>
>> out of memory
>>
> 
> This looks similar to the recent thread "Trouble Upgrading Postgres".
>
https://www.postgresql.org/message-id/flat/CAFw6%3DU2oz9rTF0qa0LFMg91bu%3Dhdisfu2-xXU1%3D%3DD7yBif%2B2uw%40mail.gmail.com
> 
> Specifically, message 
> ce239c9c-68f2-43e6-a6b6-81c66d0f46e5@manitou-mail.org 
> <https://www.postgresql.org/message-id/ce239c9c-68f2-43e6-a6b6-81c66d0f46e5%40manitou-mail.org>
> 
> "The hex expansion performed by COPY must allocate twice that size,
> plus the rest of the row, and if that resulting size is above 1GB, it
> will error out with the message you mentioned upthread:
> ERROR: invalid memory alloc request size <some value over 1 billion>.
> So there's no way it can deal with the contents over 500MB, and the
> ones just under that limit may also be problematic."

I don't this is the case. The above is an issue because of the maximum 
length of a string that Postgres can process. LO's are different creatures:

https://www.postgresql.org/docs/11/lo-implementation.html


It would help to see the memory configuration values set for the cluster:

https://www.postgresql.org/docs/11/lo-implementation.html

> 
> 
> And message 89b5b622-4c79-4c95-9ad4-b16d0d0daf9b@manitou-mail.org
> 
> "It's undoubtedly very annoying that a database can end up with
> 
> non-pg_dump'able contents, but it's not an easy problem to solve. Some 
> time ago, work was done to extend the 1GB limit but eventually it got 
> scratched. The thread in [1] discusses many details of the problem and 
> why the proposed solution were mostly a band aid. Basically, the specs 
> of COPY and other internal aspects of Postgres are from the 32-bit era 
> when putting the size of an entire CDROM in a single row/column was not 
> anticipated as a valid use case. It's still a narrow use case today and 
> applications that need to store big pieces of data like that should 
> slice them in chunks, a bit like in pg_largeobject, except in much 
> larger chunks, like 1MB.
> 
> [1] pg_dump / copy bugs with "big lines" ? 
> https://www.postgresql.org/message-id/1836813.YmyOrS99PX%40ronan.dunklau.fr 
> <https://www.postgresql.org/message-id/1836813.YmyOrS99PX@ronan.dunklau.fr>
> 
>   "
> 
> 
>> *Jean-Marc Lessard*
>> Administrateur de base de données / Database Administrator
>> Ultra Electronics Forensic Technology Inc.
>> *T* +1 514 489 4247 x4164
>> www.ultra-forensictechnology.com <http://www.ultra-forensictechnology.com>
>>
> 
> -- 
> Angular momentum makes the world go 'round.


-- 
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

Previous
From: Ron
Date:
Subject: Re: pg_dump out of memory for large table with LOB
Next
From: Adrien Nayrat
Date:
Subject: Re: pg_dump out of memory for large table with LOB