Разместить здесь рекламу http://iserverd.khstu.ru/documents/database/pgsql_tuning.html

Тюнинг сервера базы данных (PostgreSQL RDBMS):

  Иногда при запуске сервера postgresql на достаточно слабой машине работа iserverd на протоколах V3/V5 становится нестабильной. Есть несколько способов для ускорения обработки запросов.

Первое что надо сделать - это отключить вызовы fsync(), приводящие к сбросу данных из кэша на диск после каждой транзакции. Это существенно ускорит работу. Отключение fsync естественно ухудшает стойкость базы к сбоям оборудования и ПО, однако повреждение часто изменяемых таблиц вроде online_contacts, online_users некритично. Пользовательские же данные из талицы users_info_ext изменяются сравнительно редко. В любом случае рекомендуется делать резервные копии базы командами db_manage dump users_db users.txt; gzip users.txt. Отключить вызов fsync() можно в конфигурационном файле postgresql.conf, который находится в каталоге баз данных. Просто раскомментируйте опцию fsync и установите ее равной false (fsync = false)

Второй способ увеличить число shared buffers. Shared buffers находятся в разделяемой памяти и размер каждого буфера составляет 8 килобайт. В операционной системе есть ограничение на размер разделяемой памяти и это ограничивает число shared buffers сверху. По умолчанию их должно быть в два раза больше максимального числа соединений. Но лучше если их будет больше в 4-6 раз. Тут уже решать вам. Число разделяемых буферов контролируется параметром shared_buffers конфигурационного файла postgresql.conf

Необходимо увеличить размер памяти выделяемой для команды вакуумизации. По умолчанию выделяется 8192 килобайта. Но на высоконагруженном сервере с большими таблицами это значение стоит увеличить, чтобы вакуумизация проходила быстрее.

Следует также увеличить размер дискового кэша в настройках оптимизатора. Это делается параметром effective_cache_size.

Необходимо несколько раз в день (в зависимости от нагрузки) проводить вакуумизацию баз. Вакуумизация проводится с параметрами "full" и "analyze". Полная (full) вакуумизация уменьшает реальный размер базы данных на диске и это естественно ускоряет ее работу. Вакуумизация с анализом (analyze) производит сбор статистических данных, которые в дальнейшем используются оптимизатором сервера баз данных для ускорения работы. Вакуумизацию можно производить двумя способами: SQL запросом VACUUM FULL ANALYZE из интерактивного монитора psql либо командой vacuumdb -d users_db -f -z Примеры записей в crontab:

  15 08,13,18 * * * vacuumdb -d users_db -f -z -q # vacuum full
  00,30     * * * * vacuumdb -d users_db -z -q    # vacuum analyze

Есть мнение, что стоит включить принудительный поиск по индексу. Этого делать не стоит. Поиск по индексу используется по умолчанию, однако на небольших таблицах поиск перебором эффективнее и быстрее индексного. Оптимизатор сервера баз данных принимает решение об использовании или неиспользовании индекса при поиске на основании собранной статистики. Статистика расчитывается командой vacuum analyze (см. предыдущий пункт)

   Если вы запускаете postgresql на операционной системе FreeBSD, то рекомендуется увеличить значения некоторых параметров ядра. В частности это касается числа семафоров, размера разделяемой памяти. Вот часть конфигурационного файла ядра:

  options SYSVSHM
  options SHMMAXPGS=4096
  options SHMMAX="(SHMMAXPGS*PAGE_SIZE+1)"
  options SHMMIN=2
  options SHMMNI=256
  options SHMSEG=256
  options SYSVSEM
  options SEMMAP=512
  options SEMMNI=512
  options SEMMNS=1024
  options SEMMNU=512
  options SEMMSL=256
  options SEMOPM=256
  options SEMUME=64

   Крайне желательно для FreeBSD установить переменную ядра kern.ipc.shm_use_phys=1 Это запретит свопинг разделяемой памяти, что очень благоприятно скажется на работе RDBMS.
Раздел вышеUp
НачалоTop
КонецDown
Запомнить+Marker
ВосстановитьMarker
Забыть-Marker
РекламаAdv
Font

Сказать спасибо Укоротить ссылку Нашли ошибку?

Дочитать позже / поделиться

   

См. также


Новости партнеров