Как сравнить две базы данных?

Уважаемый Хабр, я верю в силу твоего коллективного разума и надеюсь получить подсказку.
Есть две, практически одинаковые, базы данных, с одинаковой структурой и данными. Одинаковые, да не совсем. На одной из баз запрос на выборку выводит результат меньше чем за 1 секунду, во второй — тот же запрос работает около 4-х секунд. Причем база которая работает быстрее — больше по объему данных. Дело не в аппаратной части, базы одинаково работают на разных серверах — одна быстрее, другая медленнее. Как можно сравнить содержимое БД, таблицы, функции, чтобы найти различия? Или куда вообще копать?

UPD. Попробовал сделать так: Развернул структуру с «медленной» базы и хотел развернуть туда данные с «быстрой» — выдало ошибки. Взял структуру с «быстрой» базы и развернул туда данные с медленной — так же медленно выполняется запрос.
  • Вопрос задан
  • 13076 просмотров
Пригласить эксперта
Ответы на вопрос 7
Stdit
@Stdit
Посмотрите индексы, присутствуют ли они в обоих в базах.
Еще можно посмотреть статистику по своей schema: www.postgresql.org/docs/9.1/static/monitoring-stats.html
Там видно количество фулсканов, автивность запросов и т.д.
Ну и explain.
Ответ написан
stepank
@stepank
если нужно сравнить все, кроме данных (структуру, _индексы_, ключи, отношения, констрейнты), можно сделать дамп только структуры, что-то типа pg_dump -sxO database_name (s — дампить только схему, x — не дампить привилегии, O — не дампить овнера), а дальше diff
Ответ написан
stan_jeremy
@stan_jeremy
не знаю есть ли тулзы сделать дифф сразу на все, навскидку пару узконаправленных тулз

от перконы для сравнения всевозможных конфигов www.percona.com/doc/percona-toolkit/2.1/pt-config-diff.html

от мускула — dev.mysql.com/doc/workbench/en/mysqldiff.html
Ответ написан
RUVATA
@RUVATA
Разработчик, гик, меломан, разгильдяй
Какие базы-то? Формат?
В любом случае без кода не обойтись… но с классическими SQL можно обойтись «малой кровью»
Ответ написан
@zvorygin
Я бы еще посмотрел в сторону VACUUM
Ответ написан
@zvorygin
В контексте последнего уточнения «Взял структуру с «быстрой» базы и развернул туда данные с медленной — так же медленно выполняется запрос.» — может посмотреть планы запросов в быстрой базе при оригинальных и при «медленных» данных? Они у Postgres-а могут меняться в зависимости от реальных данных и накопленной статистики.
Ответ написан
@k-semenenkov
Поздновато для спрашивающего но может будет полезно для остальных
https://ksdbmerge.tools/for-postgresql
GUI под Windows, сравнивает и схему и данные, есть вполне функциональная бесплатная версия.
Я автор.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы