Перейти на форум
Уведомления
Очистить все

[Закрыто] Уменьшение размера баз данных

2 Посты
1 Пользователи
1 Реакции
19.4 Тыс. Просмотры
vpmarat
Зарегистрирован: 22.01.2008

Это отдельная закрытая тема, в которой собственно скопированная из другой темы инструкция. Оригинал находится здесь снова про размеры базы и если кто желает подискутировать - вам туда.
Чтобы сократить место, занимаемое на диске базами данных, нужно:
1. Удалить (руками) логи PostgreSQL, которые лежат в папке data\pg_log, но саму папку не трогай. Если операционка не дает удалить - временно остановить сервис.
2. Чтобы она логи больше не писала (а они - лишние для нас), отключить эту опцию в настройках PostgreSQL (logging_collector = off) вот так:
(открыть файлик postgresql.conf на редактирование еще можно через Пуск -Программы-PostgreSQL-Конфигурационные файлы)
3. После чего сделать вакуум базы, а потом еще и реиндексацию (удобнее через PGAdmin, раскрыв дерево, подключившись к нужной базе и по правому клику выбрав пункт Техобслуживание). UPD: в ХМ для етого есть Optimize в меню database management.
Картинка PGadmin

4. Если покажется мало - удалить из базы ХМ1 сдачи (какие не жалко). Options > Settings - Observed HH configuration - кнопка Purge HH options. Оно собственно истории выкинет, а статистика от них останется (только в ХМ1, во втором стата после этого НЕ остается!). Только посмотреть ты их потом в реплейере не сможешь. Экономится процентов 12-15 дискового пространства. Можно удалить только часть (есть возможность отбора по разным критериям). Полная инструкция на английском здесь.
Осторожно! В ХМ1 есть и другая опция (Options - Settings Purge hands), которая, в отличие от вышеописаной, СОВСЕМ удаляет и руки, и статистику от них! Не перепутайте.
Хотя оптимальным (для обоих ХМ) является просто создание новой базы данных + импорт в нее только нужного из архива. А старую - удалить.

4а. Что касается ПТ , то удаление сдачи из базы удаляет и статистику от нее тоже. После удаления сдач (в любой из трех программ) необходимо проделать вакуум базы и реиндекс.
5. А потом, после всего - дефрагментацию диска, на котором лежит папка Data. Причем, опять же, при остановленном сервисе PostgreSQL. Лучше делать более серьезным средством, чем встроенный в Винду дефрагментатор. Например, http://technet.microsoft.com/en-us/sysinternals/bb897428.aspx
6. После чего перегрузить комп - все само включится.


1 ответ
vpmarat
Зарегистрирован: 22.01.2008

- остановить сервис Postgresql (Панель управления - Администрирование - Службы)
- переместить на другой диск папку
C:\PostgreSQL\Х.Х\data, а на старом месте создать с ней логическую связь при помощи команды (запускать через Пуск - выполнить)

mklink.exe /J C:\PostgreSQL\9.0\data\ D:\PostgreSQL\data\

где (для примера) C:\PostgreSQL\9.0\data\ - старый путь к папке, место где будет связь
D:\PostgreSQL\data - новое место куда мы переместили папку data.

- После чего запустить сервис Постгри обратно

Теперь Постгри будет думать что папка на старом месте.
Чтобы вернуть все на место, нужно остановить сервер, удалить связь как обычную папку, а потом вернуть папку data на место.

Внимание: в случае ХМ1 на этом процесс заканчивается.
Но если речь идет о ХМ2 - там еще примерно столько же по объему информации находится в другой папке, к PostgreSQL отошения не имеющей. Но ее тоже обычно переносят.