Количество сегментов отката
Ограничения на количество сегментов отката подобны ограничениям на размер сегментов отката:
Таким образом, Вам необходимо создать достаточное количество сегментов отката для того, чтобы избежать возникновения событий ожидания на заголовках сегментов отката, но не более чем максимальное число одновременных активных транзакций. Если Вы не имеете фактических измерений для Вашей системы, то Вы можете оценить необходимое число сегментов отката с помощью следующего процесса:
- Выберите коэффициент достоверности 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.
Содержание раздела