powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не выполняется дамп
20 сообщений из 45, страница 2 из 2
Не выполняется дамп
    #35677909
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MBG
Возьмите конфиг по умолчанию постгреса...
P.S. Перезагружаться под виндой обязательно.

Уже делал. По умолчанию и с перезагрузкой. Такой-же фигвам...
MBG
дампайте сначала все таблицы, кроме проблемной, а потом отдельно проблемную таблицу

Какой смысл? И так понятно что не сдампится именно эта таблица. Ведь когда ее очищаешь - то все нормально. Но очищать - низзя, там нужные объекты.
eddieпохожий баг:
http://archives.postgresql.org/pgsql-bugs/2006-11/msg00071.php
Не, не похожий. Там все нормально:[quote]But if try pg_dump --encoding=UTF8 -U postgres docs > docs.sql ALL OK![/quote]
Вот ооочень похожий: http://forum.ru-board.com/topic.cgi?forum=8&topic=28245

P.S. Завтра попробую сделать предложенную выборку - сейчас уже нет возможности.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35678734
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImNeedHelpselect * from problem_table выдает клиенту out of memory for query resultсообщение "out of memory for query result" нашел в исходниках libpq. то есть оперативки не хватает клиенту, а не серверу.

попробуйте сдампировать данные не через pg_dump, а самостоятельно с использованием курсоров.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35679443
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поэкспериментировал с bytea и таки добился out of memory :)
Код: plaintext
1.
2.
3.
pg_dump: Dumping the contents of table "_reference59" failed: PQgetCopyData() failed.
pg_dump: Сообщение об ошибке с сервера: out of memory
pg_dump: Команда была: COPY big._reference59 (_idrref, _version, _marked, _ismetadata, . . .

1,5 Гб памяти + 2 Гб свап. при дампе 136 314 880 байтного bytea ~ два гигабайта съел сервер + ~ столько же - клиент и банально кончилась память. после увеличения свапа на два гигабайта - всё сдампилось успешно:
Код: plaintext
1.
2.
3.
4.
5.
Mem:   1556260k total,  1522008k used,    34252k free,     8164k buffers
Swap:  4194284k total,  2742920k used,  1451364k free,    93536k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
23451 seb       20   0 1952m 1.0g 1024 D  2.0 70.4   0:12.92 /usr/lib/postgresql/8.3/bin/pg_dump -n big -f big.sql seb
23452 postgres  20   0 1745m 1628 1520 S  0.0  0.1   0:43.24 postgres: seb seb [local] COPY

ImNeedHelp , маловероятно, но может быть у Вас со свап файлом проблема ?

ps: как я ни старался - залить в поле столько, что потом нельзя было сдампить, не получается. insert/copy/update - все отменяются с out of memory, правда у меня стандартный 8.3 без 1С


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35680139
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
Ёшпоэкспериментировал с bytea и таки добился out of memory :)
Код: plaintext
1.
2.
3.
pg_dump: Dumping the contents of table "_reference59" failed: PQgetCopyData() failed.
pg_dump: Сообщение об ошибке с сервера: out of memory
pg_dump: Команда была: COPY big._reference59 (_idrref, _version, _marked, _ismetadata, . . .

1,5 Гб памяти + 2 Гб свап. при дампе 136 314 880 байтного bytea ~ два гигабайта съел сервер + ~ столько же - клиент и банально кончилась память. после увеличения свапа на два гигабайта - всё сдампилось успешно:


Хорошая иллюстрация к часто задаваемому вопросу о разумности хранения файлов в БД. Честно говоря, даже в голову не приходило, что оверхед может быть настолько огромным.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35681181
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBGХорошая иллюстрация к часто задаваемому вопросу о разумности хранения файлов в БД. Честно говоря, даже в голову не приходило, что оверхед может быть настолько огромным.бывает и хуже, имхо :)

вообще - да, он большой, так как при обработке bytea бинарные данные сериализуются через их строковое представление типа: E'\\000' - это например байт со значением ноль. то есть на один байт при сериализации в строку выделяется '\' '\' '0' '0' '0' - пять символов (байтов). получается в пять раз больше.

я честно говоря раньше думал что парсер запроса может обрабатывать входные строки по кусочкам, но судя по результатам экспериментов - получается что это не так. чудес не бывает :) и обновить кусок одного поля потом другого, потом вернуться опять к первому или начать выполнение до того как получена вся строка запроса от клиента - вряд ли возможно (можно конечно сделать такой сервер, что он будет писать входной запрос во временный файл, если он превышает определённый порог, но имхо это уже специфический изврат - текст запроса больше двух гигабайт :) ).
судя по размеру потраченной памяти - он пытается собрать строку сразу целиком за один раз, а так как ограничение на размер одного поля - 1 Гб (Maximum size for a field? 1 GB), видимо один гигабайт максимум он и может выделить на обработку одной строки (одного параметра запроса).
получается что приблизительный максимальный размер bytea бинарных данных = 1 Гб / 5 ~ 200 Мб.

Но тут есть неясности... во первых - не все байты обязательно паковать в пять байт их кода, те байты, значение которых совпадает с кодом ASCII символа, который можно вывести на экран - паковать не обязательно. Получается что можно передать и больше 200 мегабайт, хотя в общем случае - это зависит от содержимого (печатных символов в кодировке ASCII ~ 96 штук (из 255) )
но, например, залить avi файл размером 167 мегабайт в виде bytea мне не удалось...
2008-11-27 00:48:47 MSK ERROR: не хватает памяти
2008-11-27 00:48:47 MSK ПОДРОБНОСТИ: Ошибка при запросе размера 1073741823.
2008-11-27 00:48:47 MSK КОНТЕКСТ: COPY _reference59, строка 1: "1 1 true true 1 \N \N \N \N \N \N RIFFj\\367\\370\\011AVI LIST~"\\000\\000hdrlavih8\\000\\000\\000@\..."
2008-11-27 00:48:47 MSK КОМАНДА: COPY big._reference59 FROM STDIN

я экспериментировал с файлом размером 136 314 880 байт, заполненным случайными байтами с равномерным распределением по всему множеству значений, его текстовое представление в bytea занимало 483 470 156 символов (байт) - это с учётом печатных символов ASCII, если кодировать каждый байт (и печатный тоже), то он занимал бы соответственно 681 574 400 байт
этот файл успешно заливался через COPY TO в базу, я сделал шесть строк с ним + седьмая где это файл присутствовал в двух полях bytea:
Код: plaintext
1.
2.
3.
4.
5.
update _reference59 set
  _fld703 = i._fld6303,
  _fld6303 = i._fld6303
from _reference59 as i
where i._idrref = '6' and _reference59._idrref = '7';
вся эта таблица, после увеличения свапа, успешно дампилась pg_dump'ом

вообще, у меня хранятся файлы в рабочей базе, но в виде LO (Large Objects которые). у них есть кардинальные преимущества перед bytea:

- их не обязательно сериализовать в строку и по умолчанию насколько я понимаю это и не делается при передаче между клиентом и сервером, то есть никакого "в пять раз больше"
- с LO не обязательно работать целиком, как с одним значением. его можно читать кусочками как файл
- даже если очень хочется - его нельзя вставить в таблицу по значению, только как ID (ссылка на системную таблицу pg_largeobject), соответственно он не будет мешать обычным insert/select/update/delete
- его максимальный размер - 2 Гб
- он хранится разбитый на кусочки (по 131072 байта если не ошибаюь), таким образом при резервном копировании и восстановлении он не порождает никаких особогигантских многомегабайтных строк

да и сами файлы у меня небольшие - это отчёты в pdf максимум килобайт на 500

ps: но это всё лирика :) она не отвечает на вопрос автора топика - как так получилось что у него _в базе_ оказался bytea для обработки которого не хватает памяти. и что ему с этим делать... у меня пока не получается повторить эту проблему, но в принципе есть одна идея, может быть попробую попозже.

pps: кстати, можно ли быть уверенным что если в логах нет ругани на vacuum full и select, то таблица не повреждена ? может быть это всё же просто банально битая таблица ? %)


--
„Истина — это вовсе не то, что можно убедительно доказать, это то, что
делает всё проще и понятнее“ — Антуан де Сент-Экзюпери
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35681275
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ёшps: но это всё лирика :) она не отвечает на вопрос автора топика - как так получилось что у него _в базе_ оказался bytea для обработки которого не хватает памяти. и что ему с этим делать... у меня пока не получается повторить эту проблему, но в принципе есть одна идея, может быть попробую попозже.попробуйте сделать выборку с другой машинки, на которой мало [доступной] памяти, чтобы не хватило памяти не серверу, а клиенту.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35681383
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBatЁшps: но это всё лирика :) она не отвечает на вопрос автора топика - как так получилось что у него _в базе_ оказался bytea для обработки которого не хватает памяти. и что ему с этим делать... у меня пока не получается повторить эту проблему, но в принципе есть одна идея, может быть попробую попозже.попробуйте сделать выборку с другой машинки, на которой мало [доступной] памяти, чтобы не хватило памяти не серверу, а клиенту.

да как вариант - не сможет сделать дамп, но автор делает дамп насколько я понял на той же машине где и сервер. и памяти там по идеи хватает.
авторСегодня попробовал выгрузить дамп на машину с линуксом - но с тем же успехом, дамп обломился.
. . .
На компе кроме PG-SQL ничего нету, и кроме как pg-dump никто к серверу не обращается. Потом добавил еще пару планок мозгов - в итоге их стало в общем зачете три гига с копейками - но и это не помогло.3 Гб + ещё свап виндовый (он пока не ответил какого размера свап) + он пробовал и на другую машину делать дамп (правда не написал сколько там памяти)
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35681394
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ёшда как вариант - не сможет сделать дамп, но автор делает дамп насколько я понял на той же машине где и сервер. и памяти там по идеи хватает.может почти вся память отдана серверу постгреса, клиенту остается недостаточно. я подумал, что вы именно из-за этого советовали уменьшить work_mem.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35681446
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBatможет почти вся память отдана серверу постгреса, клиенту остается недостаточно.может быть. надо ждать его ответа про свап :)
LeXa NalBatя подумал, что вы именно из-за этого советовали уменьшить work_mem.не совсем, work_mem у него был катастрофически большой - 1 Гб. если он весь используется да ещё + shared_buffers 700 Мб, то в адресном пространстве сервера просто не останется места под строку bytea. Всего в windows процесс может выделить ~ 2 Гб
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35683125
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёшможет быть. надо ждать его ответа про свап

Своп виндовый автоматический, на винте места до дури - свап может расти еще далеко.

[quot Ёш]
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select
    max(length(_idrref)) as _idrref,
    max(length(_description)) as _description,
    max(length(_fld700rref)) as _fld700rref,
    max(length(_fld701)) as _fld701,
    max(length(_fld702_type)) as _fld702_type,
    max(length(_fld702_rtref)) as _fld702_rtref,
    max(length(_fld702_rrref)) as _fld702_rrref,
    max(length(_fld703)) as _fld703,
    max(length(_fld6303)) as _fld6303
from _reference59;
удаётся выполнить ?
Удается, вот результат:
Код: plaintext
1.
2.
3.
 _idrref | _description | _fld700rref | _fld701 | _fld702_type | _fld702_rtref | _fld702_rrref | _fld703  | _fld6303 
---------+--------------+-------------+---------+--------------+---------------+---------------+----------+----------
       16  |            92  |           16  |       60  |             1  |              4  |             16  |  77503069  |     24948 
( 1  row)
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35683131
eddie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImNeedHelp
eddieпохожий баг:
http://archives.postgresql.org/pgsql-bugs/2006-11/msg00071.php
Не, не похожий. Там все нормально:But if try pg_dump --encoding=UTF8 -U postgres docs > docs.sql ALL OK! как раз таки похожий.
I have a database with table "documents", that have column type " bytea ".
Database size is ~1.5 GB (99% of objects is images, documents, pdf's in
bytea fields, middle size of each object ~ 20Mb ).
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35683134
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скопировал PGData на юниховую машину и попробовал натравить на проблемную таблицу перловую утилиту pgfsck
Она выдала много таких строк:
Код: plaintext
1.
2.
-- Table _reference59(25157):Page 0:Tuple 1:Toast Tuple 33802: Incorrect value in header (incorrect blocksize?)
-- 0C 00 00 00 80 B2 38 BB 01 00 00 00 24 00 40 00 00 20 03 20
Может в самом деле - если эта утилита не врет - таблица побилась? Но почему тогда VACUUM/ANALIZE не выдает в логах сервера никаких ошибок и процедура отрабатывает успешно?
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35683154
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
eddieкак раз таки похожий.
Хм...
Счаз попробовал сделать дамп с --encoding=UTF8 - дамп прошел нормально! Выгрузилось четыре с лишним гига, в логах постгря - никаких ошибок out of memory !
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35683224
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImNeedHelpСкопировал PGData на юниховую машину и попробовал натравить на проблемную таблицу перловую утилиту pgfsck
Она выдала много таких строк:
Код: plaintext
1.
2.
-- Table _reference59(25157):Page 0:Tuple 1:Toast Tuple 33802: Incorrect value in header (incorrect blocksize?)
-- 0C 00 00 00 80 B2 38 BB 01 00 00 00 24 00 40 00 00 20 03 20
Может в самом деле - если эта утилита не врет - таблица побилась? Но почему тогда VACUUM/ANALIZE не выдает в логах сервера никаких ошибок и процедура отрабатывает успешно?а Вы останавливали сервер перед копированием ?
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35683225
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImNeedHelpeddieкак раз таки похожий.
Хм...
Счаз попробовал сделать дамп с --encoding=UTF8 - дамп прошел нормально! Выгрузилось четыре с лишним гига, в логах постгря - никаких ошибок out of memory !значит это была просто ошибка :) надо Вам видимо обновляться до 8.2.11, в 8.2.8 была исправлена ошибка:
Код: plaintext
Fix ERRORDATA_STACK_SIZE exceeded crash that occurred on Windows when using UTF-8 database encoding and a different client encoding (Tom)
может быть с ней и была связана Ваша проблема ? у Вас какие настройки локали базы ?
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35683276
ImNeedHelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёша Вы останавливали сервер перед копированием ?
Странный вопрос, конечно останавливал - иначе даже скопировать не получится - файлы блокируются постгрей.
Ёшзначит это была просто ошибка :)
Да вааще непонятно - что это такое. Попробовал сделать дамп как и раньше без --encoding=UTF8 - дамп прошел нормально - и судя по файлам - он ничем не отличается от дампа с --encoding=UTF8
Ёшнадо Вам видимо обновляться до 8.2.11
Сие невозможно, так как постгря патченный фирмой 1С, есть только 8.2.6 и далее уже 8.3.х
Видать придется на 8.3 ставить, так как выгрузка базы средствами 1С все равно не проходит.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35683779
Фотография Степан H.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читалась ветка взалеб, как детективный роман, думалось .. вот она, разгадка, близко ...
.. а оказалось ни причины ни следствия, все работает или само(???) вдруг заработало... грустно.
...
Рейтинг: 0 / 0
Не выполняется дамп
    #35726273
мимоходящий сисадмин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ImNeedHelpкак выгрузка базы средствами 1С все равно не проходит. а вот это проблема некоторых релизов 1С 8.1.
у нас 8.1.11.67 - в нем таких проблем уже нет.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Не выполняется дамп
    #37730899
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3.5 года прошло, а воз и ныне там..
у меня таже самая ситуация:
постгря 8.3.8 на центосе (всё 32бит) стоит и при попытке стандартного дампа выдаёт:

авторpg_dump: SQL command failed
pg_dump: Error message from server: ERROR: не хватает памяти
DETAIL: Ошибка при запросе размера 1073741823.
pg_dump: The command was: COPY public.config (filename, creation, modified, attributes, datasize, binarydata) TO stdout;

увеличение свопа до 50гб ничего не дало
файл дампа обрубается на 2117мб, т.е. ~2ГБ

vacuum full ничего не показывает
select * from public.config; - ошибок не выдает ( там кстати почему-то пустая таблица .. по-крайней мере в начале только оглавления столбцов и никаких данных.. но я так понимаю, - если начало пустое, значит и вся таблица пустая?)

вариант ставить 64 бита не вариант, потому что из-за каких-то кривых конфигов, написанных самих же 1с, отдавать 50к им же, и за работу ещё столько же и гемор потом лечить всю жизнь - не айс ни разу
остаётся вариант только править сам конфиг..
какие ещё варианты?

работало кстати всё ок, пока там чё-то обновлять не начали в конфиге. поставили новый походу и понеслась..
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Не выполняется дамп
    #38838751
algur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если это ещё кому-то интересно.
Проблема, скорее всего в ограничении размера транзакции (1ГБ).
Возможное решение - делать дамп с ключиком --inserts:

Код: plaintext
pg_dump -U postgres --inserts -Fc -Z9 -c -f $dump_name.sql $table_name

Должно работать, но надо пробовать.
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не выполняется дамп
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]