Хорошей практикой для улучшения производительности PostgreSQL, разместить файлы БД на другом диске, особенно эффективно если БД размещена на другом физическом диске, так как при доступе к диску изрядное время занимает не только чтение данных, но и перемещение магнитной головки.
И так решение для Vista/Windows7/Windows8/Windows Server 2012:
- Остановите сервис PostgreSQL - Панель Управления -> Администрирование -> Службы. Находите postgresql-x.x. Клик правой кнопкой - Stop;
- Теперь можете скопировать папку данных C:\Program Files\PostgreSQL\x.x\data\ в новую папку, для примера в - D:\pg\;
- Для новой папки назначаем полные права доступа для NETWORK SERVICE роли;
- Отредактируйте реестр. (Win+R) и в текстовом поле наберите команду regedit. Запустится редактор реестра. Переходим в ветку: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/postgresql-x.x. Клик правой кнопкой мыши по ключу ImagePath - изменить. Изменяете путь к папке, которая во вторых кавычках C:/Program Files/PostgreSQL/9.2/bin/pg_ctl.exe runservice -N "postgresql-9.2" -D "C:/Program Files/PostgreSQL/9.2/data" -w на C:/Program Files/PostgreSQL/9.2/ bin/pg_ctl.exe runservice -N "postgresql-8.4" -D "D:/pg/data" -w;
- Почти все готово, теперь можете удалить папку C:\Program Files\PostgreSQL\x.x\data\ и запустить сервис postgresql-x.x.
Готово.