From: Evgeny Yugov <evgeny.yugov@gmail.com>
To: sysadmins@lists.altlinux.org
Subject: Re: [Sysadmins] PostgreSQL оптимизация
Date: Mon, 13 Oct 2008 10:42:19 +0700
Message-ID: <48F2C39B.9040903@gmail.com> (raw)
In-Reply-To: <48EDEEB6.5080801@gmail.com>
Здравствуйте.
Много раз задавался подобным вопросом, теоретических материалов навалом.
Maxim Tyurin поделился общей формулой, которая годится в большинстве
случаев, надеюсь он не обидится если я её приведу тут:
""Стандартная настройка"
Среднестатическая настройка для максимальной производительности.
Берём размер памяти (RAM), ставим:
* shared_buffers = 1/8 RAM или больше (но не более 1/4);
* work_mem в 1/20 RAM;
* maintenance_work_mem в 1/4;
* max_fsm_relations в планируемое кол-во таблиц в базах * 1.5;
* max_fsm_pages в max_fsm_relations * 2000;
* fsync = true;
* wal_sync_method = fdatasync;
* commit_delay = от 10 до 100 ;
* commit_siblings = от 5 до 10;
* effective_cache_size = 0.9 от значения cached, которое показывает free;
* random_page_cost = 2 для быстрых cpu, 4 для медленных;
* cpu_tuple_cost = 0.001 для быстрых cpu, 0.01 для медленных;
* cpu_index_tuple_cost = 0.0005 для быстрых cpu, 0.005 для медленных;
ну и autovacuum включить ещё. с analyze treshhold в 900, и vacuum
treshhold в 1800.
Если на сервере крутится еще что-то большое кроме PostgreSQL то нужно
изменить effective_cache_size (например 1С рекомендует устанавливать
этот параметр в RAM/2).
Выключить fsync можно только при использовании аппаратного рейда с BBU.
Также в рекомендациях от 1С встречается "установить enable_nestloop = off "
Не стоит так делать. Как, впрочем, и использовать другие костыли, для
того, чтобы обмануть планировщик запросов PostgreSQL. Планировщик у
PostgreSQL значительно умнее среднестатистического администратора БД, и
в 99.9% случаев срабатывает корректно.
Если же он работает некорректно, то нужно настраивать в первую очередь
effective_cache_size, random_page_cost и cpu*_cost. Чем меньше значения
этих параметров, тем больше будут использоваться агрессивные планы с
использованием индексов."
(с) Maxim Tyurin
Alexandr Ogurtsov пишет:
> Уважаемые коллеги, ищу совета по настройке производительности PostgreSQL
> 8.1.(Debian Etch)
<поскипанно>
--
Здесь могла быть ваша реклама...
next prev parent reply other threads:[~2008-10-13 3:42 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-09 11:44 Alexandr Ogurtsov
2008-10-10 8:39 ` Alexandr Ogurtsov
2008-10-10 9:34 ` Ivan Fedorov
2008-10-10 10:10 ` Alexandr Ogurtsov
2008-10-10 12:27 ` Ivan Fedorov
2008-10-10 11:07 ` Andrey Chichak
2008-10-10 11:21 ` Alexandr Ogurtsov
2008-10-10 16:06 ` Alexandr Ogurtsov
2008-10-13 3:42 ` Evgeny Yugov [this message]
2008-10-13 10:09 ` Maxim Tyurin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48F2C39B.9040903@gmail.com \
--to=evgeny.yugov@gmail.com \
--cc=sysadmins@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux sysadmins discussion
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
public-inbox-index sysadmins
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sysadmins
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git