|
|
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
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. Завтра попробую сделать предложенную выборку - сейчас уже нет возможности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2008, 23:05:40 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
ImNeedHelpselect * from problem_table выдает клиенту out of memory for query resultсообщение "out of memory for query result" нашел в исходниках libpq. то есть оперативки не хватает клиенту, а не серверу. попробуйте сдампировать данные не через pg_dump, а самостоятельно с использованием курсоров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 12:24:35 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
поэкспериментировал с bytea и таки добился out of memory :) Код: plaintext 1. 2. 3. 1,5 Гб памяти + 2 Гб свап. при дампе 136 314 880 байтного bytea ~ два гигабайта съел сервер + ~ столько же - клиент и банально кончилась память. после увеличения свапа на два гигабайта - всё сдампилось успешно: Код: plaintext 1. 2. 3. 4. 5. ImNeedHelp , маловероятно, но может быть у Вас со свап файлом проблема ? ps: как я ни старался - залить в поле столько, что потом нельзя было сдампить, не получается. insert/copy/update - все отменяются с out of memory, правда у меня стандартный 8.3 без 1С -- „Истина — это вовсе не то, что можно убедительно доказать, это то, что делает всё проще и понятнее“ — Антуан де Сент-Экзюпери ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 14:54:54 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
Ёшпоэкспериментировал с bytea и таки добился out of memory :) Код: plaintext 1. 2. 3. 1,5 Гб памяти + 2 Гб свап. при дампе 136 314 880 байтного bytea ~ два гигабайта съел сервер + ~ столько же - клиент и банально кончилась память. после увеличения свапа на два гигабайта - всё сдампилось успешно: Хорошая иллюстрация к часто задаваемому вопросу о разумности хранения файлов в БД. Честно говоря, даже в голову не приходило, что оверхед может быть настолько огромным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2008, 17:45:57 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
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. вообще, у меня хранятся файлы в рабочей базе, но в виде LO (Large Objects которые). у них есть кардинальные преимущества перед bytea: - их не обязательно сериализовать в строку и по умолчанию насколько я понимаю это и не делается при передаче между клиентом и сервером, то есть никакого "в пять раз больше" - с LO не обязательно работать целиком, как с одним значением. его можно читать кусочками как файл - даже если очень хочется - его нельзя вставить в таблицу по значению, только как ID (ссылка на системную таблицу pg_largeobject), соответственно он не будет мешать обычным insert/select/update/delete - его максимальный размер - 2 Гб - он хранится разбитый на кусочки (по 131072 байта если не ошибаюь), таким образом при резервном копировании и восстановлении он не порождает никаких особогигантских многомегабайтных строк да и сами файлы у меня небольшие - это отчёты в pdf максимум килобайт на 500 ps: но это всё лирика :) она не отвечает на вопрос автора топика - как так получилось что у него _в базе_ оказался bytea для обработки которого не хватает памяти. и что ему с этим делать... у меня пока не получается повторить эту проблему, но в принципе есть одна идея, может быть попробую попозже. pps: кстати, можно ли быть уверенным что если в логах нет ругани на vacuum full и select, то таблица не повреждена ? может быть это всё же просто банально битая таблица ? %) -- „Истина — это вовсе не то, что можно убедительно доказать, это то, что делает всё проще и понятнее“ — Антуан де Сент-Экзюпери ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 10:50:39 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
Ёшps: но это всё лирика :) она не отвечает на вопрос автора топика - как так получилось что у него _в базе_ оказался bytea для обработки которого не хватает памяти. и что ему с этим делать... у меня пока не получается повторить эту проблему, но в принципе есть одна идея, может быть попробую попозже.попробуйте сделать выборку с другой машинки, на которой мало [доступной] памяти, чтобы не хватило памяти не серверу, а клиенту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 11:12:13 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatЁшps: но это всё лирика :) она не отвечает на вопрос автора топика - как так получилось что у него _в базе_ оказался bytea для обработки которого не хватает памяти. и что ему с этим делать... у меня пока не получается повторить эту проблему, но в принципе есть одна идея, может быть попробую попозже.попробуйте сделать выборку с другой машинки, на которой мало [доступной] памяти, чтобы не хватило памяти не серверу, а клиенту. да как вариант - не сможет сделать дамп, но автор делает дамп насколько я понял на той же машине где и сервер. и памяти там по идеи хватает. авторСегодня попробовал выгрузить дамп на машину с линуксом - но с тем же успехом, дамп обломился. . . . На компе кроме PG-SQL ничего нету, и кроме как pg-dump никто к серверу не обращается. Потом добавил еще пару планок мозгов - в итоге их стало в общем зачете три гига с копейками - но и это не помогло.3 Гб + ещё свап виндовый (он пока не ответил какого размера свап) + он пробовал и на другую машину делать дамп (правда не написал сколько там памяти) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 11:34:09 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
Ёшда как вариант - не сможет сделать дамп, но автор делает дамп насколько я понял на той же машине где и сервер. и памяти там по идеи хватает.может почти вся память отдана серверу постгреса, клиенту остается недостаточно. я подумал, что вы именно из-за этого советовали уменьшить work_mem. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 11:38:26 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatможет почти вся память отдана серверу постгреса, клиенту остается недостаточно.может быть. надо ждать его ответа про свап :) LeXa NalBatя подумал, что вы именно из-за этого советовали уменьшить work_mem.не совсем, work_mem у него был катастрофически большой - 1 Гб. если он весь используется да ещё + shared_buffers 700 Мб, то в адресном пространстве сервера просто не останется места под строку bytea. Всего в windows процесс может выделить ~ 2 Гб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 11:52:00 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
Ёшможет быть. надо ждать его ответа про свап Своп виндовый автоматический, на винте места до дури - свап может расти еще далеко. [quot Ёш] Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Удается, вот результат: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 23:09:04 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
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 ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 23:23:07 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
Скопировал PGData на юниховую машину и попробовал натравить на проблемную таблицу перловую утилиту pgfsck Она выдала много таких строк: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2008, 23:25:40 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
eddieкак раз таки похожий. Хм... Счаз попробовал сделать дамп с --encoding=UTF8 - дамп прошел нормально! Выгрузилось четыре с лишним гига, в логах постгря - никаких ошибок out of memory ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 00:07:19 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
ImNeedHelpСкопировал PGData на юниховую машину и попробовал натравить на проблемную таблицу перловую утилиту pgfsck Она выдала много таких строк: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 05:24:48 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
ImNeedHelpeddieкак раз таки похожий. Хм... Счаз попробовал сделать дамп с --encoding=UTF8 - дамп прошел нормально! Выгрузилось четыре с лишним гига, в логах постгря - никаких ошибок out of memory !значит это была просто ошибка :) надо Вам видимо обновляться до 8.2.11, в 8.2.8 была исправлена ошибка: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 05:35:05 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
Ёша Вы останавливали сервер перед копированием ? Странный вопрос, конечно останавливал - иначе даже скопировать не получится - файлы блокируются постгрей. Ёшзначит это была просто ошибка :) Да вааще непонятно - что это такое. Попробовал сделать дамп как и раньше без --encoding=UTF8 - дамп прошел нормально - и судя по файлам - он ничем не отличается от дампа с --encoding=UTF8 Ёшнадо Вам видимо обновляться до 8.2.11 Сие невозможно, так как постгря патченный фирмой 1С, есть только 8.2.6 и далее уже 8.3.х Видать придется на 8.3 ставить, так как выгрузка базы средствами 1С все равно не проходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2008, 10:38:56 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
читалась ветка взалеб, как детективный роман, думалось .. вот она, разгадка, близко ... .. а оказалось ни причины ни следствия, все работает или само(???) вдруг заработало... грустно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2008, 01:15:22 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
ImNeedHelpкак выгрузка базы средствами 1С все равно не проходит. а вот это проблема некоторых релизов 1С 8.1. у нас 8.1.11.67 - в нем таких проблем уже нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2008, 00:08:35 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
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к им же, и за работу ещё столько же и гемор потом лечить всю жизнь - не айс ни разу остаётся вариант только править сам конфиг.. какие ещё варианты? работало кстати всё ок, пока там чё-то обновлять не начали в конфиге. поставили новый походу и понеслась.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2012, 10:24:39 |
|
||
|
Не выполняется дамп
|
|||
|---|---|---|---|
|
#18+
Если это ещё кому-то интересно. Проблема, скорее всего в ограничении размера транзакции (1ГБ). Возможное решение - делать дамп с ключиком --inserts: Код: plaintext Должно работать, но надо пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2014, 17:00:16 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35683134&tid=1998281]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
186ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 515ms |

| 0 / 0 |
