Re: [BUGS] BUG #14843: CREATE TABLE churns through all memory,crashes db

Поиск
Список
Период
Сортировка
От Andres Freund
Тема Re: [BUGS] BUG #14843: CREATE TABLE churns through all memory,crashes db
Дата
Msg-id 20171005231611.5tfuwmeihma6mtu5@alap3.anarazel.de
обсуждение исходный текст
Ответ на [BUGS] BUG #14843: CREATE TABLE churns through all memory, crashes db  (ropeladder@gmail.com)
Ответы Re: [BUGS] BUG #14843: CREATE TABLE churns through all memory,crashes db
Список pgsql-bugs
Hi!

On 2017-10-05 23:03:21 +0000, ropeladder@gmail.com wrote:
> (first bug report here so please let me know if this can be improved)

Thanks for reporting. This is a pretty good start.


> The command takes a table with one jsonb document and creates a new table
> with 3 rows: one jsonb, one text, and one timestamp. The initial table has
> 2.6M rows, the new table should have 4.9M rows (because of a
> jsonb_array_elements() expansion). The actual query is below:
> 
> CREATE TABLE new_table as (
> SELECT
>     jsonb_array_elements(doc->'text'->0->'hasauthor') doc,
>     doc->'text'->0->'$'->>'id' rid,
>     regexp_replace(doc->>'mtime','[TZ]',' ')::timestamp mtime
> FROM source_table
> WHERE (doc#>'{"text",0,"hasauthor"}') IS NOT NULL)
> 
> The 2.6M jsonb documents in the source table are structured similar to
> this:
> 
> {"$": {"xmlns": "http://amf.openlib.org", "xmlns:xsi":
> "http://www.w3.org/2001/XMLSchema-instance", "xmlns:repec":
> "http://repec.openlib.org", "xsi:schemaLocation": "http://amf.openlib.org
> http://amf.openlib.org/2001/amf.xsd"}, "text": [{"$": {"id":
> "RePEc:zwi:ipaper:56"}, "date": [{"$": {"event": "created"}, "_":
> "2009-02"}], "file": [{"url":
> ["http://www.url.edu/documents/issuepapers/ip56.pdf"], "format":
> ["application/pdf"]}], "type": ["preprint"], "title": ["The Need for New
> Milk Pricing Policies"], "status": ["Number 56 18 pages"], "abstract":
> ["Long text string."], "ispartof": [{"collection": [{"$": {"ref":
> "RePEc:zwi:ipaper"}}]}], "keywords": ["milk, dairy, pricing, price gouging,
> New England"], "hasauthor": [{"person": [{"name": ["Adam Lastname"],
> "email": ["email@gmail.com"], "ispartof": [{"organization": [{"name":
> ["University of Connecticut"]}]}]}]}, {"person": [{"name": ["Ronald
> Lastname"], "email": ["email@email.com"], "ispartof": [{"organization":
> [{"name": ["University of Connecticut"]}]}]}]}]}], "mtime":
> "2014-05-31T03:59:33.000Z"}

Could you either try to form a reproducible demonstration of the problem
out of this, or get a memory context dump?  If you disable the kernel's
overcommit heuristics, your computer won't crash on OOM, instead
postgres will get an error, and log a dump that shows where memory is
used.

I use
$ cat /etc/sysctl.d/60-oom.conf
vm.overcommit_memory = 2
vm.overcommit_ratio = 50

for that purpose (that means only swap + 50% of memory can be handed out
to applications, if you don't have swap you might want to use 80 or
such).

Greetings,

Andres Freund


-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

В списке pgsql-bugs по дате отправления:

Предыдущее
От: ropeladder@gmail.com
Дата:
Сообщение: [BUGS] BUG #14843: CREATE TABLE churns through all memory, crashes db
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [BUGS] pg_logical_slot_peek_changes crashes postgres when called from inside pl/pgsql