Меню

Расширенные возможности моделирования в SAP HANA. Часть 1. Использование функции кэширования результатов запроса для повышения производительности

В статье рассматривается оптимальное применение опции кэширования результатов запроса для повышения производительности при работе с информационными ракурсами. Вы научитесь определять оптимальные условия для использования этой опции в смоделированной базе данных SAP HANA. В статье также затрагиваются и другие связанные с кэшированием темы.

Ключевое понятие

Вот уже несколько лет в системе SAP HANA доступна функция кэширования результатов выполнения информационного ракурса. Однако начиная с версии Support Package Stack 9 появились более эффективные возможности, которых стало еще больше в Support Package Stack 11. Кэширование результатов в информационном ракурсе позволяет повысить производительность, но при этом может спровоцировать увеличение периода ожидания (запаздывания), в результате чего данные теряют актуальность. Для специалистов по моделированию очень важно учитывать эту особенность и уметь определять правильное время для применения функций кэширования.

С каждой новой версией SAP HANA растет количество функций, многие из которых предназначены для оптимизации производительности информационных ракурсов. В значительной степени это касается кэширования. Для специалиста по моделированию, не занимающегося написанием кода, в SAP HANA Support Package Stack 9 доступно множество новых опций, чтобы оптимально и без особых усилий использовать результаты запроса. В этой статье рассматривается работа с данными функциями в ракурсах, которые используют интеллектуальный доступ к данным и удаленные/виртуальные таблицы. Именно это и является основным вариантом использования данной функции. Кроме того, я расскажу о преимуществах использования функции ежедневной и ежечасной инвалидации (сброса — далее везде) кэша запросов для увеличения производительности, а также о недостатках этих опций в отношении потребления памяти и задержек при обработке данных (просмотра устаревшей версии данных). Наконец, вы узнаете о новой опции в Support Package Stack 11. Это так называемая опция аннулирования транзакционного кэша, доступная в Support Package Stack 11 и выше. Для меня эта опция является предпочтительной, поскольку при работе с ней период ожидания не увеличивается.

Примечание.

В этой статье преимущественно рассматривается функция «кэш результатов». В Support Package Stack 11 доступна еще более новая функция, «кэш ракурса запросов», но для работы с ней требуется написание программного кода, поэтому ее описание не входит в задачи этой статьи. Однако в одной из следующих статей я расскажу о ней подробнее.

Определение, предпосылки к появлению и история функции кэширования результатов запроса

С появлением систем хранилищ данных были созданы инструменты экстракции, преобразования и загрузки данных (ETL), поставляющие данные в хранилище, в котором они физически хранились в оптимизированных структурах для отчетности, как правило, в схеме «звезда». С помощью средств построения отчетности того времени отчеты по этим сводным структурированным данным выполнялись достаточно быстро. Однако современные системы отчетности позволяют строить отчеты за секунды, а не за минуты или часы как в прошлом. Даже сложные отчеты с подключением к нескольким таблицам теперь выполняются в считанные секунды. Система SAP HANA с мощной памятью, поколоночным хранением и параллельной обработкой выполняет это требование на 99 %, но как быть с тем +/–1 % отчетов, которые по-прежнему выполняются слишком медленно? Проблему этого +/–1 % отчетов решает новая функция кэширования результатов запроса SAP HANA.

Кэширование результатов запроса используется для постоянного хранения результатов SQL-выражения для многократного использования при повторном выполнении идентичного SQL-выражения. Это происходит, например, при обращении к одному и тому же ракурсу инструментами обработки отчетности с идентичными условиями навигации и фильтрации. Итак, в первый раз вы выполняете запрос (SQL-выражение), в SAP HANA сохраняется результат. Это называется кэшем результатов SQL-выражения. Как правило, эти результаты SQL-выражения хранятся в течение всего периода их использования и удаляются при выполнении другого SQL-выражения. Однако при работе с таким расширенным набором опций кэширования вы получаете возможность использовать кэш позднее (повторно), что может быть весьма удобно.

Оптимальные условия для кэширования SQL-выражений с помощью функции кэширования результатов запроса на основе моделирования:

1. Многократное использование одного и того же запроса.

2. Использование запросов с длительным выполнением в базе данных, которые обращаются к крупным таблицам и соединяют их.

3. Небольшие результаты запросов.

Что касается третьего условия, при использовании кэша результатов возникают затраты: кэш результатов использует память, а память в SAP HANA — недешевое удовольствие. С другой стороны, если первое условие является значимым, т. е. ваша компания выполняет один и тот же запрос множество раз, и этот процесс является достаточно длительным (второе условие), функция кэширования упрощает задачу пользователям, а получаемые от ее использования преимущества оправдывают увеличение расхода памяти.

Базовая функция кэширования результатов запроса появилась в SAP HANA за несколько лет до выхода Support Package Stack 9. Однако для ее внедрения требовалось написание программного кода. В Support Package Stack 9 была добавлена опция без написания кода для специалистов по моделированию, а в Support Package Stack 11 появилось еще больше возможностей. Эти специфичные для ракурсов опции и являются главной темой данной статьи, однако ими весь объем опций кэширования не исчерпывается. Все опции представлены на рис. 1. В данной статье я рассматриваю только функцию кэширования результатов запроса. Остальные две опции, удаленный кэш и кэш ракурса, описаны во второй части данного цикла из трех статей, поскольку в настоящее время для их внедрения требуется написание программного кода.

Рис. 1. Опции кэширования запросов SAP HANA

Настройка функции кэширования результатов запроса

Перед тем, как обратиться к новым возможностям в функции кэширования результатов запроса, я опишу базовую настройку. Как правило, эти базовые шаги выполняются администраторами SAP HANA, поскольку в течение процесса моделирования ракурсов настройка этих опций конфигурации не выполняется. Однако специалист по моделированию должен знать, какие именно действия выполняют другие сотрудники для корректной работы данной функцией, чтобы не тратить время, пытаясь понять, почему ничего не получается, несмотря на точное следование инструкциям.

Для перехода к настройкам конфигурации щелкните по пиктограмме инструментов на панели инструментов SAP HANA Studio (не показано). Названия релевантных для данной статьи инструментов начинаются с resultcache_ .

Повторю, специалист по моделированию не должен самостоятельно устанавливать эти параметры настройки, это задача администратора базы данных. Вы должны убедиться, что активирован кэш результатов (указано значение «Да», см. Рис. 2). Кроме того, необходимо проверить, что установлено минимальное время выполнения по умолчанию (resultcache_minimum_query_execution_time_in_milliseconds).

Оформите подписку sappro и получите полный доступ к материалам SAPPRO

У вас уже есть подписка?

Войти