Базы данных Oracle - статьи

         

результаты тестирования


В данной статье обсуждается эффективность разных способов выполнения операторов SQL: с использованием различных моделей программирования и параметров инициализации CУБД Oracle. Тесты были специально спроектированы, чтобы показать эту эффективность. Прогоны тестов выполнялись в испытательной системе с 24 ЦП. Ядро каждого теста – цикл, выполняющий оператор SQL одну тысяч раз, и каждый тест выполнялся как одиночная программа, а также как 3, 6, 12 и 24 параллельно выполняемых копии. Во всех случаях измерялись среднее значение суммы использованного времени всеми копиями, а также время, затраченное на ожидание защелок (время ЦП извлекалось из статистики CУБД Oracle 'CPU used by this session' – "время ЦП, использованное в данном сеансе", а время ожидания защелок из данных события 'latch free' – "время ожидания защелки, занятой другим процессом"). Абсолютные значения результатов не имеют никакого значения, но результаты можно сравнивать для демонстрации преимущества использования конкретных моделей программирования приложений или параметров инициализации CУБД Oracle.

В первом тесте используются переменные связывания, как советует корпорация Oracle для обеспечения лучшей производительности OLTP-приложений. Он демонстрирует эффективность моделей программирования, в которых каждый оператор SQL разбирается и выполняется или один раз разбирается и многократно выполняется, а также эффективность использования параметров session_cached_cursors и cursor_space_for_time startup.

Второй и третий тесты демонстрируют использование параметра cursor_sharing. Второй тест – типичный пример OLTP-приложения с надежными литералами: никакие литералы не инициируют оптимизацию и используется установка параметра cursor_sharing=force. Третий тест – вариант с ненадежными литералами, в котором используется установка параметра cursor_sharing=similar.

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



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