Когда кэширование включено, каждый запрос оценивается, чтобы определить, подходит ли он для попадания в кэш.
Попадание в кэш означает, что платформе Oracle Analytics Cloud удалось использовать кэш для получения ответа на запрос и вообще не пришлось обращаться к базе данных. Oracle Analytics Cloud может использовать кэш запросов для получения ответа на запросы на том же или более высоком уровне агрегирования.
Наличие кэша зависит от многих факторов. Эти факторы описаны в таблице ниже.
| Фактор или правило | Описание |
|---|---|
|
Подмножество столбцов в списке |
Все столбцы в списке Это правило описывает минимальное требование для попадания в кэш, но соблюдение этого правила не гарантирует попадания в кэш. Также применяются другие правила, перечисленные в этой таблице. |
|
Столбцы в списке |
Oracle Analytics Cloud может вычислять выражения на основе кэшированных результатов для получения ответа на новый запрос, но все столбцы должны быть в кэшированном результате. Например, запрос SELECT product, month, averageprice FROM sales WHERE year = 2000 попадает в кэш для запроса SELECT product, month, dollars, unitsales FROM sales WHERE year = 2000 так как |
|
Фраза |
Чтобы запрос соответствовал требованиям попадания в кэш, ограничения фразы Фраза
Кроме того, столбцы, используемые во фразе SELECT employeename
FROM employee, geography
WHERE region in ('EAST', 'WEST')
Не приводит к попаданию в кэш заполняющего запроса из предыдущего списка, так как REGION не находится в проекционном списке. |
|
Запросы только для измерений должны быть полным совпадением |
Если запрос относится только к измерениям, то есть в запрос не входит факт или показатель, то только при полном совпадении проекционных столбцов кэшированного запроса имеет место попадание в кэш. Такое поведение предотвращает ложное срабатывание при наличии нескольких логических источников для таблицы измерений. |
|
Запросы со специальными функциями должны быть полным совпадением |
Другие запросы, которые содержат специальные функции, такие как функции временных рядов ( |
|
Набор логических таблиц должен совпадать |
Чтобы соответствовать требованиям попадания в кэш, все входящие запросы должны иметь тот же набор логических таблиц, что и запись в кэше. Это правило позволяет избежать ложных попаданий в кэш. Например, |
|
Значения переменных сеанса должны совпадать, включая переменные сеанса безопасности |
Если логическая или физическая инструкция SQL ссылается на любую переменную сеанса, значения переменных сеанса должны совпадать. В противном случае нет попадания в кэш. Кроме того, значение переменных сеанса, зависимых от режима безопасности, должно совпадать со значениями переменных сеанса безопасности, определенным в семантической модели, даже если сама логическая инструкция SQL не ссылается на переменные сеанса. См. раздел Обеспечение корректности результатов в кэше при использовании защиты базы данных на уровне строк. |
|
Эквивалентные условия соединения |
Результирующая объединенная логическая таблица новой заявки запроса должна совпадать с кэшированными результатами (или их подмножеством), чтобы соответствовать критериям попадания в кэш. |
|
Атрибут |
Если кэшированный запрос удаляет дубликаты записей с обработкой инструкции |
|
Запросы должны содержать совместимые уровни агрегирования |
Запросы, запрашивающие агрегированный уровень информации, могут использовать кэшированные результаты с более низким уровнем агрегирования. Например, следующий запрос запрашивает количество товаров, проданных на уровне поставщика, региона и города: SELECT supplier, region, city, qtysold FROM suppliercity Следующий запрос запрашивает количество товаров, проданных на уровне города: SELECT city, qtysold FROM suppliercity Второй запрос приводит к попаданию в кэш для первого запроса. |
|
Ограниченное дополнительное агрегирование |
Например, если запрос со столбцом |
|
Фраза |
Запросы, упорядоченные по столбцам, которых нет в списке выбора, приводят к кэш-промахам. |
|
Диагностика поведения попаданий в кэш |
Чтобы лучше оценить поведение попаданий в кэш, задайте переменной сеанса ENABLE_CACHE_DIAGNOSTICS значение 4, как показано в следующем примере: ENABLE_CACHE_DIAGNOSTICS=4 |