Получение образца вашей базы данных - Postgresql
У нас есть полувыводящая база данных, которая занимает много времени для локального импорта на наших отдельных машинах разработчика. Мне было интересно, есть ли какие-либо инструменты, которые могли бы подключиться к базе данных, сделать небольшой анализ и извлечь образец базы данных, сохраняя все отношения через переданный параметр. Что-то вроде pg_sample --rough_size 1000 --dbhost mydbhost --dbuname uname --dbpword pword это создает дамп, который я могу импортировать в свою базу данных для тестирования и разработки. Но не займет 45 минут, чтобы сделать это.
Спасибо
2 ответа
Я написал такой инструмент: https://github.com/mla/pg_sample
Из README:
pg_sample - это утилита для экспорта небольшого образца набора данных из большой базы данных PostgreSQL. Параметры вывода и командной строки очень похожи на утилиту резервного копирования pg_dump (хотя поддерживается только простой текстовый формат).
Созданный образец базы данных включает все таблицы из оригинала, поддерживает ссылочную целостность и поддерживает циклические зависимости.
Я предлагаю вам исследовать pg_dump --format=custom
а также pg_restore -j 12
, custom
Формат позволяет выполнять параллельное восстановление (и при желании может быть выгружен в необработанный SQL, поэтому вы не теряете здесь никакой функциональности). -j
параметр для pg_restore
заставляет его выполнять восстановление параллельно. Это может обеспечить существенное ускорение. Особенно, если вы подняли ваш файл maintenance_work_mem красивым и большим.
Это не решит проблему, о которой вы спрашивали напрямую, по причинам, изложенным Эрвином выше, а также потому, что требует определенного уровня знаний о том, что важно представлять, а что нет, просто отсутствует в схеме. Это то, что отнимает время у разработчика и, как правило, должно выполняться одновременно с созданием схемы.