31 марта 2009 г.

Оптимальный размер для лог буффера (log buffer)

В продолжение темы об ожиданиях log file sync - сегодня опять с ними столкнулась во время нагрузочного тестирования. Знаю, что причиной ожиданий log file sync могут быть:
1) частые коммиты
2) слишком большой log_buffer
3) медленные диски, на которых находятся лог файлы.

Первую и третью причину отбросила, с ними я и так ничего не могу поделать.
Взялась за вторую причину: размер лог буфера оказался равен 45MB. У Бурлесона прочитала советы об оптимальном размере лог буфера:

MetaLink note 216205.1 Database Initialization Parameters for Oracle Applications 11i, recommends a log_buffer size of 10 megabytes for Oracle Applications, a typical online database:

A value of 10MB for the log buffer is a reasonable value for Oracle Applications and it represents a balance between concurrent programs and online users.

The value of log_buffer must be a multiple of redo block size, normally 512 bytes.

10MB? Не много ли? Слышала очень много советов о том, что нет смысла устанавливать его больше 1МБ. Правда ли это?
Бурлесон пишет, что есть увеличение размера лог буфера больше 1МБ реально улучшала прозводительность:
Even though Oracle has traditionally suggested a log_buffer no greater than one meg, I have seen numerous shops where increasing log_buffer beyond one meg greatly improved throughput and relieved undo contention.

На металинке пишут, что нет смысла устанавливать его больше 5МБ:
It has been noted previously that values larger than 5M may not make a difference.

Решила пока уменьшить лог буфер с 45МБ до 10МБ, посмотрю. Если не поможет, попробую уменьшить до 5МБ.

2 коммент.:

Алексей Шаляпин - это я. комментирует...

Насколько я знаю, размер буфера лог-врайтера напрямую влияет на ожидание "log buffer space"
(комментарий - The process is waiting for space to become available in the log buffer (Space becomes available only after LGWR has written the current contents of the log buffer to disk.) This typically happens when applications generate redo faster than LGWR can write it to disk.)

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

Unknown комментирует...

Лучше думать не о размере Log Buffer'a, а о скорости диска на который он пишет.