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

       

Размер сегмента отката


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

  • Достаточно малый для кэширования — блоки сегментов отката загружаются и выгружаются в SGA по тем же правилам (LRU), что и другие блоки базы данных. БОльшие размеры сегментов отката заполнят бОльшую часть кэша блоков данных и, тем самым, вытеснят другие блоки данных (например, блоки данных ветвей индексов), которые улучшали бы производительность приложения. Возросшее число неуспехов в кэше блоков данных БД, вызванное б.ольшим размером сегментов отката, не только снизит качество кэша, но резко увеличивает загрузку ЦПУ и подсистемы ввода/вывода.
  • Достаточно большой размер для больших транзакций — если Ваше приложение использует длительные транзакции, генерирующие сотни килобайт информации отката без фиксации, то Вы должны иметь, как минимум, один сегмент отката с таким размером, чтобы хранить всю информацию отката, создаваемую с.амой длительной Вашей транзакцией. Иначе, транзакция может завершиться с ошибкой.

Oracle7 имеет несколько возможностей, которые резко снижают сложность администрирования сегментов отката по сравнению с тем, что мы имели в Oracle6: (1) сегменты отката могут расти и сжиматься, и (2) имеется возможность перевода сегментов отката в автономный или оперативный режимы без необходимости останова инстанции.

Даже с учетом этих возможностей администрирование сегментов отката остается сложной задачей в смешанных средах с OLTP и пакетной обработками. Ключевыми средствами, снижающими негативное влияние сегментов отката на производительность, являются:

  • Проектирование приложения — проектируйте Ваши приложения так, чтобы большие объемы DML (особенно вставки) выполнялись с unrecoverable-опцией везде, где это допустимо. Для транзакций, которые должны выполняться в обычном режиме, проектируйте приложение таким образом, чтобы оно вызывало частые промежуточные фиксации. Если Вы не можете выполнить этого, то как минимум, для хранения информации отката, выбирайте упомянутый ранее большой сегмент отката с помощью команды set transaction use rollback segment.
  • Планирование заданий — если Вы вынуждены использовать пакетные программы, выполняющие большой объем DML-операций без промежуточных фиксаций (например, предустановленные программы, которые Вы не имеете возможности настраивать), то старайтесь планировать такие задание таким образом, чтобы они не конкурировали с интенсивными параллельными процессами работающими с SGA. Для снижения накладных расходов по поддержанию непротиворечивости чтения, а также для предотвращения ошибок «snapshot too old», Вы также должны стараться разделить по времени запуск таких программ и программ читающих изменяемые данные.


Вы можете использовать следующий метод для определения оптимального размера сегментов отката для Вашей системы.


  1. Убедитесь, что все оперативные сегменты отката имеют одинаковый размер. Вы можете держать несколько сегментов отката специального размера в автономном режиме для использования во временном окне, выделенном для пакетной обработки. Если Вы используете такую схему, то в начале окна пакетной обработки, Вы должны перевести небольшие OLTP-сегменты отката в автономный режим и перевести сегменты отката предназначенные для пакетной обработки в оперативный режим. После окончания окна пакетной обработки Вам необходимо выполнить обратные действия для подготовки БД к OLTP-нагрузке.
  2. Выберите размер сегмента отката таким, чтобы он был достаточно большим для хранения информации отката некоторого небольшого числа k одновременно запущенных наибольших транзакций, которые Вы будете использовать в момент активности этого сегмента отката. Критерий для выбора значения k заключается в минимизации числа блоков в кэше блоков данных БД, выделенных для хранения сегмента отката. Если наибольшая транзакция генерирует менее чем один блок БД информации отката, то k = 4, 5, 6 . . . , 10.
  3. Если наибольшая транзакция порождает сотни килобайт информации отката, то установите k < 4 и побеседуйте с людьми, которые разработали приложение.
  4. Установите значение minextents в диапазоне от 8 до 20 для каждого сегмента отката, а также значение optimal в значение, гарантирующее, что сегмент отката не будет сокращаться менее чем до 8 (до 20) экстентов. Обратите внимание, что большое значение minextents предполагает небольшое значение для размера экстента сегмента отката.


Использование нескольких экстентов в сегмента отката снижает частоту появления событий роста и сжатия [, Millsap (1995b)].


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