Оптимизации для написания тяжелого приложения Oracle? - PullRequest
4 голосов
/ 09 октября 2008

Какие полезные оптимизации Oracle можно использовать для приложения, которое в основном записывает (обновляет) базу данных Oracle?

Общий шаблон использования здесь - это не веб-обслуживание или регистрация, как в большинстве случаев, а вместо этого для сохранения сложного состояния системы, поэтому чтение требуется только при запуске системы, после чего ее обновление и создать весь путь. Таким образом, прямо сейчас отношение записи к чтению превышает 9: 1, в этом случае какая настройка базы данных может повысить производительность?

Ответы [ 4 ]

5 голосов
/ 09 октября 2008

Мониторинг состояния системы с использованием statspack (9i) или AWR (10g +) будет лучшим способом выявления узких мест.

В частности:

  • В ожидании повторного ожидания. Журнал повторов имеет решающее значение для поддержания высокой скорости записи
  • Использовать переменные связывания
  • По возможности используйте массовые операции.
  • Следите за конфликтом индексов, когда несколько процессов вставляют записи в одну таблицу с индексом в столбце, полученном из последовательности
2 голосов
/ 09 октября 2008

Вместе с ответом Давида:

  • Отслеживание миграции строк и цепочки строк, а также изменение параметров хранилища таблиц при необходимости
  • Проверьте файловую систему журналов повторов: отключите кэширование FS (т. Е. Используйте Direct I / O), отключите время последнего доступа, измените размер блока на 512B. Или, что еще лучше, перейдите на ASM.
  • Прочтите об индексированных таблицах и посмотрите, можно ли их применять где угодно.
  • Убедитесь, что используется асинхронный ввод / вывод.
  • Для больших размеров SGA, включить большие страницы и LOCK_SGA (зависит от платформы)
  • Поэкспериментируйте с различными настройками DBWR (например, fast_start_mttr_target , dbwr_processes )
  • На аппаратном уровне убедитесь, что у вас есть достойный контроллер RAID-10 с включенным кэшированием записи! Получите много жестких дисков 15K RPM.

Последнее, но не менее важное: определяют повторяемые и реалистичные тесты производительности перед тем, как вносить какие-либо изменения. В этом типе настройки много хитов и промахов - для каждого выполнения теста нужно делать только одно изменение за раз.

1 голос
/ 09 октября 2008

Я не могу порекомендовать Oracle Enterprise Management Console (встроенная в Oracle). Это позволит вам точно знать, что вы делаете неправильно, и , как это исправить!

Возможно, вы захотите избавиться от любых дополнительных индексов (индексов?), Которые у вас могут быть. Это может привести к небольшим накладным расходам при запуске, но добавление данных в индексированную таблицу может значительно замедлить его.

0 голосов
/ 10 октября 2008

В зависимости от характеристик вашего приложения и ваших данных, рассмотрите объемную загрузку данных с использованием внешней таблицы Oracle. Попросите приложение записать данные в текстовый файл, а затем используйте INSERT INTO вашей целевой таблицы из SELECT на внешней таблице = очень быстро.

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

Я использовал это для загрузки файлов текстовых данных почти в реальном времени со скоростью 40000 файлов в день, до около 2 МБ на файл, в экземпляр базы данных Oracle 10g объемом 8 ТБ (да, TeraBytes).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...