Работа с длинными строками в PostgreSQL
В полях типов text и bytea могут храниться данные до 1 Гб. Если размер строки в процессе обработки превышает 1 Гб, возникают ошибки нехватки памяти. Обнаруживают такие ошибки обычно при выгрузке данных утилитой pg_dump, которая преобразует бинарные данные в текстовый вид.
Когда строки таблицы выгружаются командой COPY TO (вообще, когда происходит обработка данных любыми командами), выделяется память под строковый буфер, причем выделяется он динамически в процессе обработки каждой строки, а не при запуске серверного процесса. Максимальный размер буфера задан в stringinfo.c константой MaxAllocSize, которая равна 0x3fffffff, что равно 1 Гб – 1 байт (1 073 741 823 байт). Читать дальше.
Post #850
2.7K