Конфигурирование сервера Oracle для сверхбольших баз данных

       

Количество сегментов отката


Ограничения на количество сегментов отката подобны ограничениям на размер сегментов отката:

  • Достачно малое, чтобы кэшироваться — Наличие слишком большого числа сегментов отката имеет тот же болезненный эффект на качество кэша в SGA и обработку контрольной точки, что и слишком большие размеры сегментов отката.
  • Достаточно большое, чтобы избежать конкуренции — Наличие слишком малого числа сегментов отката будет причиной конкуренции за транзакционную таблицу (transaction table) сервера Oracle, которая храниться в заголовке сегмента отката. Определить наличие конкуренции за сегменты отката Вы можете с помощью показателя undo header

    waits из динамической таблицы производительности v$waitstat.

Таким образом, Вам необходимо создать достаточное количество сегментов отката для того, чтобы избежать возникновения событий ожидания на заголовках сегментов отката, но не более чем максимальное число одновременных активных транзакций. Если Вы не имеете фактических измерений для Вашей системы, то Вы можете оценить необходимое число сегментов отката с помощью следующего процесса:

  1. Выберите коэффициент достоверности C, где 0 < C < 1. К примеру, если Вы хотите получить 90% оценку, то C = 0.90.
  2. Оцените максимальное число активных пользователей в момент пиковой загрузки системы. Обозначим это число пользователей как n.
  3. Оцените вероятность того, произвольно взятая транзакция будет активной в случайно заданный момент. Обозначим эту вероятность как p.
  4. Найдите наименьшее значение x для которого

где

и P(X = x) есть функция биноминального распределения Бернулли, определенная как

Если Вы имеете Excel или подобный инструмент, то можете найти значение x очень просто, как показано в .

  • После некоторого времени эксплуатации Вы можете выполнить тонкую настройку сегментов отката на основе наблюдений за таблицей v$waitstat. Если присутствует событие ожидания undo header waits, то попытайтесь решать проблему с помощью увеличения числа сегментов отката. Если событий ожидания заголовка сегмента отката нет, Вы можете удалить один или несколько сегментов отката, не оказывая влияния на производительность системы.



    n = 170, p = 0.05x 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.


    Содержание раздела