Заметки PostgreSQL
При работе в PSQL Tool печатаются символы не совпадающие с символами с клавиатуры. В консоли PSQL Tool висит сообщение WARNING
Для решения проблемы нужно открыть консоль PSQL Tool через командную строку.
psql -h warp -U postgres testbase
Подключаемся к базе данных testbase, работающей на сервере warp от имени пользователя postgres через psql.
psql \! chcp 1251
Если в процессе выполнения не было ошибок, пробуем повторить запрос в PSQL Tools.
2. При установке PostgreSQL желательно сразу указать кодовую страницу win1251. По умолчанию при установке указывается cp866.
Temp_buffers и work_mem нужны каждому сеансу. Теперь возьмите, сколько у вас памяти на сервере и разделите на количество активных пользователей – вот вам примерные ориентиры.
Зачем вообще нужен temp_buffers и work_mem?
Temp_buffers нужен, чтобы ваши временные таблицы создавались в памяти. Это не значит, что если временная таблица будет больше, чем temp_buffers, у вас все упадет. Нет, она просто на диск скопируется и там будет дальше работать.
Work_mem нужен, чтобы операции order by и distinct делались в памяти, эти операции сопровождают все динамические списки.
Поэтому work_mem тоже не забывайте увеличивать.
В настройках выставьте log_temp_files=temp_buffers. И если у вас в логах будут появляться записи, что у вас TEMPORARY TABLE создана на диске, там будет указано еще и сколько туда байт всунули и какой оператор это вызвал. И вы поймете, если у вас очень много таких записей, вам надо temp_buffers увеличить или work_mem.
@echo off setlocal rem Установите переменные set PGUSER=your_username set PGPASSWORD=your_password set PGHOST=localhost set PGPORT=5432 set FROM_DB=ИмяБазыОткуда set TO_DB=ИмяБазыКуда set BACKUP_FILE=C:\path\to\backup\ИмяБазыОткуда.bak rem Создание резервной копии echo Creating backup of %FROM_DB%... pg_dump -U %PGUSER% -h %PGHOST% -p %PGPORT% -F c -b -v -f %BACKUP_FILE% %FROM_DB% rem Проверка успешности создания резервной копии if %ERRORLEVEL% neq 0 ( echo Backup failed! exit /b %ERRORLEVEL% ) rem Восстановление базы данных echo Restoring database to %TO_DB%... pg_restore -U %PGUSER% -h %PGHOST% -p %PGPORT% -d %TO_DB% -v %BACKUP_FILE% rem Проверка успешности восстановления if %ERRORLEVEL% neq 0 ( echo Restore failed! exit /b %ERRORLEVEL% ) rem Удаление файла резервной копии echo Deleting backup file... del %BACKUP_FILE% rem Проверка успешности удаления if %ERRORLEVEL% neq 0 ( echo Failed to delete backup file! exit /b %ERRORLEVEL% ) echo Operation completed successfully! endlocal
5. Ошибка "out of shared memory"
pg_dump: [archiver (db)] query failed: ERROR: out of shared memory
HINT: You might need to increase max_locks_per_transaction.
pg_dump: [archiver (db)] query was: LOCK TABLE public._accumrgaggdict5h75976 IN ACCESS SHARE MODE
В каталоге data (По умолчанию, для 64 бит C:\Program Files\PostgreSQL\<версия_СУБД>\data), найти postgresql.conf, открыть блокнотом, найти и раскомментировать строчку max_locks_per_transaction=64 и поменять значение на 150, например.