У меня есть пара очень больших (~ 17 ГБ) дампов базы данных, которые я хочу загрузить в postgresql 9.3. После установки пакетов базы данных, более или менее изучив их использование, и немного поигрался на различных страницах StackExchange (особенно этот вопрос), похоже, правильная команда для меня выглядит примерно так:
cat mydb.pgdump | psql mydb
из-за формата дампа. На моей машине 16 ГБ ОЗУ, и я не знаком с cat
но я знаю, что моя оперативная память исчерпана на 99% и загрузка базы данных требует времени. Моя машина не перестает отвечать на запросы до зависания; Я могу запускать другие команды в других окнах терминала и выполнять их с разумной скоростью, но мне интересно, cat
это лучший способ передать файл или что-то еще более эффективное? Меня беспокоит то, что возможно cat
может использовать всю оперативную память, поэтому с базой данных не с чем работать, что снижает ее производительность. Но я новичок в подобных проблемах с оперативной памятью и не знаю, ни о чем ли не беспокоюсь.
Теперь, когда я думаю об этом, мне кажется, что это скорее вопрос о cat
и использование его памяти, чем что-либо еще. Если есть более подходящий форум для этого вопроса, пожалуйста, дайте мне знать. Спасибо!
Меня беспокоит то, что, возможно, cat использует всю оперативную память, поэтому базе данных не с чем работать, что снижает ее производительность.
Это не так. cat
просто передает данные от ввода к выводу.
В любом случае здесь нет необходимости, используйте
psql dbname < mydb.pgdump
моя оперативная память исчерпана на 99%, и загрузка базы данных занимает некоторое время.
Как вы измеряете «истощение на 99%»? Мне интересно, если вы не можете исключить буферы / кеш. Показать вывод free -h
(или если это не удается с ошибкой, free -m
).
В общем, для более быстрого восстановления БД я рекомендую использовать нестандартный формат (-Fc
) dump, затем с помощью параллельного pg_restore
вместо того psql
.