Производительность базы данных Oracle в отдельных томах Azure NetApp Files
В этой статье рассматриваются следующие темы об Oracle в облаке. Эти темы могут представлять особый интерес для администратора базы данных, облачного архитектора или архитектора хранилища:
- Когда вы управляете рабочей нагрузкой оперативной обработки транзакций (OLTP) (в основном случайным вводом-выводом) или рабочей нагрузкой интерактивной аналитической обработки (OLAP) (в основном последовательным вводом-выводом), как выглядит производительность?
- В чем разница в производительности между обычным клиентом NFS ядра Linux (kNFS) и собственным клиентом Direct NFS Oracle?
- Что касается пропускной способности, достаточно ли производительности одного тома Azure NetApp Files?
Внимание
Для правильного и оптимального развертывания Oracle dNFS следуйте инструкциям по исправлению, описанным здесь.
Среда тестирования и компоненты
На следующей диаграмме показана среда, используемая для тестирования. Для единообразия и простоты для развертывания всех элементов тестового стенда использовались сценарии Ansible.
Конфигурация виртуальной машины
В тестах использовалась следующая настройка виртуальной машины:
- Операционная система:
RedHat Enterprise Linux 7.8 (wle-ora01) - Типы экземпляров:
При тестировании использовались две модели — D32s_v3 и D64s_v3 - Количество сетевых интерфейсов:
Один (1) помещен в подсеть 3 - Диски:
Бинарные файлы Oracle и ОС были помещены на один премиум-диск
Конфигурация Azure NetApp Files
В тестах использовалась следующая конфигурация Azure NetApp Files:
- Размер пула емкости:
Были настроены различные размеры пула: 4 ТиБ, 8 ТиБ, 16 ТиБ, 32 ТиБ - Уровень обслуживания:
Ультра (128 МиБ/с пропускной способности на 1 ТиБ выделенной емкости тома) - Тома:
Были оценены одно- и двухтомные тесты
Генератор рабочей нагрузки
В тестах использовалась рабочая нагрузка, созданная SLOB 2.5.4.2. SLOB (Silly Little Oracle Benchmark) — это хорошо известный генератор рабочей нагрузки в пространстве Oracle, предназначенный для нагрузки и тестирования подсистемы ввода-вывода с помощью физической нагрузки ввода-вывода с SGA-буферизацией.
SLOB 2.5.4.2 не поддерживает подключаемую базу данных (PDB). Таким образом, в сценарии setup.sh
и runit.sh
было внесено изменение, чтобы добавить к ним поддержку PDB.
Переменные SLOB, используемые в тестах, описаны в следующих разделах.
Рабочая нагрузка 80 % ВЫБРАТЬ, 20 % ОБНОВИТЬ | Случайный ввод/вывод — переменные slob.conf
UPDATE_PCT=20
SCAN_PCT=0
RUN_TIME=600
WORK_LOOP=0
SCALE=75G
SCAN_TABLE_SZ=50G
WORK_UNIT=64
REDO_STRESS=LITE
LOAD_PARALLEL_DEGREE=12
Рабочая нагрузка 100 % ВЫБРАТЬ | Последовательный ввод/вывод — переменные slob.conf
UPDATE_PCT=0
SCAN_PCT=100
RUN_TIME=600
WORK_LOOP=0
SCALE=75G
SCAN_TABLE_SZ=50G
WORK_UNIT=64
REDO_STRESS=LITE
LOAD_PARALLEL_DEGREE=12
База данных
Версия Oracle, используемая для тестов, — Oracle Database Enterprise Edition 19.3.0.0.
Параметры Oracle следующие:
sga_max_size
: 4096Msga_target
: 4096db_writer_processes
: 12awr_pdb_autoflush_enabled
: truefilesystemio_options
: SETALLlog_buffer
: 134217728
PDB была создана для базы данных SLOB.
На следующей диаграмме показано табличное пространство с именем PERFIO размером 600 ГБ (20 файлов данных по 30 ГБ каждый), созданное для размещения четырех пользовательских схем SLOB. Каждая пользовательская схема имела размер 125 ГБ.
Метрики производительности
Цель состояла в том, чтобы сообщить о производительности ввода-вывода, испытанной приложением. Поэтому все диаграммы в этой статье используют метрики, сообщаемые базой данных Oracle через отчеты автоматического репозитория рабочих нагрузок (AWR). На диаграммах используются следующие метрики:
- Среднее количество запросов ввода-вывода/с
Соответствует сумме среднего числа запросов ввода-вывода на чтение в секунду и среднего числа запросов ввода-вывода на запись в секунду из раздела профиля нагрузки - Средний объем операций ввода-вывода, МБ/с
Соответствует сумме среднего числа операций ввода-вывода при чтении, МБ/с, и среднего числа операций ввода-вывода при записи, МБ/с, из раздела профиля нагрузки - Средняя задержка чтения
Соответствует средней задержке события ожидания Oracle "последовательное чтение файла базы данных" в микросекундах - Количество потоков/схема
Соответствует количеству потоков SLOB на схему пользователя
Результаты измерения производительности
В этом разделе описаны результаты измерения производительности.
Клиент Linux kNFS против Oracle Direct NFS
Этот сценарий выполнялся на виртуальной машине Azure Standard_D32s_v3 (Intel E5-2673 v4 @ 2,30 ГГц). Рабочая нагрузка составляет 75 % SELECT и 25 % UPDATE, в основном случайный ввод-вывод, и с попаданием в буфер базы данных ~ 7,5 %.
Как показано на следующей диаграмме, клиент Oracle DNFS обеспечил в 2,8 раза большую пропускную способность, чем обычный клиент kNFS Linux:
На следующей диаграмме показана кривая задержки для операций чтения. В этом контексте узким местом для клиента kNFS является соединение с одним сокетом NFS TCP, установленное между клиентом и сервером NFS (том Azure NetApp Files).
Клиент DNFS смог отправить больше запросов ввода-вывода в секунду из-за его способности создавать сотни соединений сокетов TCP, таким образом используя преимущества параллелизма. Как описано в разделе Конфигурация Azure NetApp Files, каждый дополнительный выделенный ТиБ позволяет получить дополнительные 128 МБ/с полосы пропускания. Пропускная способность DNFS превысила 1 ГиБ/с, что является пределом, налагаемым выбором емкости 8 ТиБ. При большей емкости можно было бы добиться большей пропускной способности.
Пропускная способность — это только одно из соображений. Еще одним соображением является задержка, которая в первую очередь влияет на взаимодействие с пользователем. Как показано на следующей диаграмме, увеличение задержки можно ожидать гораздо быстрее с kNFS, чем с DNFS.
Гистограммы дают отличное представление о задержках в базе данных. Следующая диаграмма дает полное представление с точки зрения записанного "последовательного чтения файла db" при использовании DNFS в самой высокой точке данных параллелизма (32 потока/схема). Как показано на следующей диаграмме, 47 % всех операций чтения выполнялись между 512 микросекундами и 1000 микросекундами, в то время как 90 % всех операций чтения выполнялись с задержкой менее 2 мс.
Таким образом, очевидно, что DNFS является обязательной, когда дело доходит до повышения производительности экземпляра базы данных Oracle на NFS.
Ограничения производительности одного тома
В этом разделе описаны пределы производительности одного тома со случайным вводом-выводом и последовательным вводом-выводом.
Случайный ввод-вывод
DNFS может потреблять гораздо большую пропускную способность, чем предусмотрено квотой производительности файлов Azure NetApp Files размером 8 ТБ. При увеличении емкости тома Azure NetApp Files до 16 ТиБ, что является мгновенным изменением, пропускная способность тома увеличилась с 1024 МиБ/с в 2 раза до 2048 МиБ/с.
На следующей диаграмме показана конфигурация для рабочей нагрузки выбора 80 % и обновления 20 %, а также с коэффициентом попадания в буфер базы данных 8 %. SLOB смог обработать один том до 200 000 запросов ввода-вывода NFS в секунду. Учитывая, что каждая операция имеет размер 8 КиБ, тестируемая система смогла доставить ~ 200 000 запросов ввода-вывода в секунду или 1600 МиБ/с.
На следующей диаграмме кривой задержки чтения показано, что по мере увеличения пропускной способности чтения задержка плавно увеличивается ниже линии 1 мс и достигает изгиба кривой при ~ 165 000 средних запросов ввода-вывода чтения в секунду при средней задержке чтения ~ 1,3 мс. Это значение невероятной задержки для скорости ввода-вывода, недостижимой практически для любой другой технологии в облаке Azure.
Последовательный ввод-вывод
Как показано на следующей диаграмме, не все операции ввода-вывода являются случайными по своей природе, учитывая, например, резервное копирование RMAN или полное сканирование таблицы как рабочие нагрузки, требующие максимальной пропускной способности. Используя ту же конфигурацию, что описана ранее, но с измененным размером тома до 32 ТиБ, на следующей диаграмме показано, что один экземпляр Oracle DB может обеспечить пропускную способность более 3900 МБ/с, что очень близко к квоте производительности тома Azure NetApp Files в 32 ТБ (128 МБ/с * 32 = 4096 МБ/с).
Таким образом, Azure NetApp Files помогают перенести базы данных Oracle в облако. Он обеспечивает производительность, когда этого требует база данных. Вы можете динамически и без прерывания работы изменить размер квоты объема в любое время.