Конфигурирование сервера Oracle для сверхбольших баз данных
Количество сегментов отката
Ограничения на количество сегментов отката подобны ограничениям на размер сегментов отката:
Достачно малое, чтобы кэшироваться — Наличие слишком большого числа сегментов отката имеет тот же болезненный эффект на качество кэша в SGA и обработку контрольной точки, что и слишком большие размеры сегментов отката.
Достаточно большое, чтобы избежать конкуренции — Наличие слишком малого числа сегментов отката будет причиной конкуренции за транзакционную таблицу (transaction table) сервера Oracle, которая храниться в заголовке сегмента отката. Определить наличие конкуренции за сегменты отката Вы можете с помощью показателя undo header
waits из динамической таблицы производительности v$waitstat.
Таким образом, Вам необходимо создать достаточное количество сегментов отката для того, чтобы избежать возникновения событий ожидания на заголовках сегментов отката, но не более чем максимальное число одновременных активных транзакций. Если Вы не имеете фактических измерений для Вашей системы, то Вы можете оценить необходимое число сегментов отката с помощью следующего процесса:
Выберите коэффициент достоверности C, где 0 < C < 1. К примеру, если Вы хотите получить 90% оценку, то C = 0.90.
Оцените максимальное число активных пользователей в момент пиковой загрузки системы. Обозначим это число пользователей как n.
Оцените вероятность того, произвольно взятая транзакция будет активной в случайно заданный момент. Обозначим эту вероятность как p.
Найдите наименьшее значение x для которого
где
и P(X = x) есть функция биноминального распределения Бернулли, определенная как
Если Вы имеете Excel или подобный инструмент, то можете найти значение x очень просто, как показано в .
После некоторого времени эксплуатации Вы можете выполнить тонкую настройку сегментов отката на основе наблюдений за таблицей v$waitstat. Если присутствует событие ожидания undo header waits, то попытайтесь решать проблему с помощью увеличения числа сегментов отката. Если событий ожидания заголовка сегмента отката нет, Вы можете удалить один или несколько сегментов отката, не оказывая влияния на производительность системы.
n = 170, p = 0.05
x P(X = x) P(X ≤ x)
0
0.000
0.000
1
0.001
0.002
2
0.006
0.008
3
0.019
0.027
4
0.042
0.069
5
0.074
0.143
6
0.106
0.249
7
0.131
0.381
8
0.141
0.521
9
0.133
0.655
10
0.113
0.768
11
0.086
0.854
12
0.060
0.915
13
0.039
0.953
14
0.023
0.976
15
0.012
0.988
16
0.006
0.995
17
0.003
0.998
18
0.001
0.999
19
0.001
1.000
Итого
1.000
Таблица 4. Оценка требуемого числа сегментов отката для OLTP. В данном примере, если мы имеем 170 одновременно работающих пользователей, каждый из которых запускает 3-секундную транзакцию раз в минуту, наличие 12 сегментов отката будет обеспечивать транзакцию сегментом отката в 90% времени. Таблица создана в Excel с помощью функции binomidist.