Как ускорить работу PostgreSQL с помощью операций DUMP и RESTORE
Добавлено: 15 июн 2010, 00:49
Заинтересовала тема, начал делать описание с картинками и сам пробовать, но позже оказалось, что это мало что дает по сравнению с VACUUM, ANALYZE и REINDEX. Решил запостить как есть, вдруг кому пригодиться.
Сделали все это за 1 час вместе с моим другом, компьютер которого и стал подопытным кроликом...
По сообщениям на официальном форуме Holdem Manager такая операция сохранения дампа базы и восстановления ее из дампа лучше, чем VACUUM, ANALYZE и REINDEX, правда требует много места на жестком диске и некоторой сноровки. После нее размер базы данных значительно уменьшиться и увеличиться скорость работы, по словам специалистов.
У нас получилось, что небольшая база в 1500мб (это 300к рук) после полного VACUUM, ANALYZE и REINDEX стала занимать 1171мб, после же дампа и восстановления из него заняла 1111мб. Возможно еще это как-то повлияло на скорость работы, но мы не заметили, размер базы маловат для тестов.
Операция подойдет тем, у кого БД уже более 10-20гб, т.е. например кто покупает регулярно майнинг.
Чтобы определить размер базы данных, нужно выполнить такой запрос (окно выполнения запросов открывается в pgAdmin через кнопку "Выполнить пользовательские SQL запросы"):
Для тех, кто "в танке": подходит для программ Poker Tracker 3, Holdem Manager, Poker Office и всех других, которые используют PostgreSQL!
Итак, начнем
1) Найдите, где находится ваша база данных. Скорее всего это:
или C:\Program Files\PostgreSQL
или C:\Program Files (x86)\PostgreSQL
2) Для слабонервных: скопируйте установленный PostgreSQL(т.е. все директорию PostgreSQL из п.1), если вы боитесь потерять базу, хоть это почти невозможно в этой операции.
3) Запустите утилиту pgAdmin III(искать в Пуск - Программы - PostgreSQL). Она идет в комплекте с PostgreSQL. Если ее у вас нет, то скачайте отсюда: http://www.pgadmin.org/download/windows.php
4) Создайте новое соединение к базе данных:
5) В списке появится новый пункт localhost(сервер postgresql). Выберите его и выберите нужную базу из списка "Базы". У меня это "hmdb".
6) По клику правой кнопкой выбираем Резервная копия...
Лучше делать копию в PLAIN - это быстрее, но требует больше места на диске!
7) Создайте новую базу данных. Для этого по правому клику на "Базы" выберите "Новая база данных..."
8) Восстановите ее содержимое из файла дампа. Для этого по правому клику мыши выбираем "Восстановить" и выбираем нужный файл:
И жмем ОК. Если будут ошибки, то ничего страшного.
Если вдруг ОК ни в какую не горит(у нас при написании этой статьи после первого восстановления она уже не захотела загораться, видимо программа глючит иногда), можно сделать так:
8-А) Запускаем командную строку. Для этого в Пуск - Выполнить или в 7-ке в строке поиска меню Пуск введите cmd и нажмите ОК.
8-Б) Пишем: SET PATH=C:\Program Files\PostgreSQL\8.4\bin
Строка эта зависит от пути, куда установлен ваш PostgreSQL
8-В) Пишем: CD C:\
8-Г) Пишем: PSQL -h localhost -p 5432 -U postgres -W -f hmdb_dump.sql hmdb_new
Вводим свой пароль(обычно у всех postgres). И ждем, когда программа завершит работу.
Сделали все это за 1 час вместе с моим другом, компьютер которого и стал подопытным кроликом...
По сообщениям на официальном форуме Holdem Manager такая операция сохранения дампа базы и восстановления ее из дампа лучше, чем VACUUM, ANALYZE и REINDEX, правда требует много места на жестком диске и некоторой сноровки. После нее размер базы данных значительно уменьшиться и увеличиться скорость работы, по словам специалистов.
У нас получилось, что небольшая база в 1500мб (это 300к рук) после полного VACUUM, ANALYZE и REINDEX стала занимать 1171мб, после же дампа и восстановления из него заняла 1111мб. Возможно еще это как-то повлияло на скорость работы, но мы не заметили, размер базы маловат для тестов.
Операция подойдет тем, у кого БД уже более 10-20гб, т.е. например кто покупает регулярно майнинг.
Чтобы определить размер базы данных, нужно выполнить такой запрос (окно выполнения запросов открывается в pgAdmin через кнопку "Выполнить пользовательские SQL запросы"):
- Код: Выделить всё
SELECT pg_size_pretty(pg_database_size('yourdatabasename'));
Для тех, кто "в танке": подходит для программ Poker Tracker 3, Holdem Manager, Poker Office и всех других, которые используют PostgreSQL!
Итак, начнем
1) Найдите, где находится ваша база данных. Скорее всего это:
или C:\Program Files\PostgreSQL
или C:\Program Files (x86)\PostgreSQL
2) Для слабонервных: скопируйте установленный PostgreSQL(т.е. все директорию PostgreSQL из п.1), если вы боитесь потерять базу, хоть это почти невозможно в этой операции.
3) Запустите утилиту pgAdmin III(искать в Пуск - Программы - PostgreSQL). Она идет в комплекте с PostgreSQL. Если ее у вас нет, то скачайте отсюда: http://www.pgadmin.org/download/windows.php
4) Создайте новое соединение к базе данных:
5) В списке появится новый пункт localhost(сервер postgresql). Выберите его и выберите нужную базу из списка "Базы". У меня это "hmdb".
6) По клику правой кнопкой выбираем Резервная копия...
Лучше делать копию в PLAIN - это быстрее, но требует больше места на диске!
7) Создайте новую базу данных. Для этого по правому клику на "Базы" выберите "Новая база данных..."
8) Восстановите ее содержимое из файла дампа. Для этого по правому клику мыши выбираем "Восстановить" и выбираем нужный файл:
И жмем ОК. Если будут ошибки, то ничего страшного.
Если вдруг ОК ни в какую не горит(у нас при написании этой статьи после первого восстановления она уже не захотела загораться, видимо программа глючит иногда), можно сделать так:
8-А) Запускаем командную строку. Для этого в Пуск - Выполнить или в 7-ке в строке поиска меню Пуск введите cmd и нажмите ОК.
8-Б) Пишем: SET PATH=C:\Program Files\PostgreSQL\8.4\bin
Строка эта зависит от пути, куда установлен ваш PostgreSQL
8-В) Пишем: CD C:\
8-Г) Пишем: PSQL -h localhost -p 5432 -U postgres -W -f hmdb_dump.sql hmdb_new
Вводим свой пароль(обычно у всех postgres). И ждем, когда программа завершит работу.