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