Кэширование результатов поисковых запросов
Спецификация
::=
Общие правила
-
Описание механизма кэширования результатов SQL-запросов см. в документе «Архитектура СУБД», пункт «Кэшируемые SQL-запросы» и в подпункте «Подсказки о кэшировании запросов».
-
Для управления кэшированием результатов поисковых запросов необходимо иметь привилегию DBA.
-
Опция
ENABLE
разрешает кэшировать результаты выполнения запросов указанного пользователя< имя пользователя >
(в том числе и пользователя SYSTEM). -
По умолчанию кэширование результатов запросов разрешено всем пользователям, но при выполнении следующих условий:
-
при создании БД задано ненулевое количество кэшируемых результатов запросов (значение параметра
ANSWERCACHE
не равно нулю – см. документ «Создание и конфигурирование базы данных», подпункт «Установка параметров конфигурирования»); -
в тексте SQL-запроса содержится подсказка о необходимости кэширования результатов запроса (см. подпункт «Подсказки о кэшировании запросов»).
-
-
Опция
DISABLE
запрещает кэшировать результаты выполнения запросов указанного пользователя< имя пользователя >
(в том числе и пользователя SYSTEM). -
Команда не влияет на кэширование претранслированных запросов (их кэширование выполняется при установке параметра
QUERYCACHE
конфигурации БД).
Примеры
1) Отключение кэширования результатов поисковых запросов alter user u1 disable answercache; 2) Обратное включение кэширования результатов поисковых запросов alter user u1 enable answercache; create or replace table test(id int, ch char(10)); insert into test values(1,'a1'); insert into test select id + 1,'a' + to_char(id + 1) from test; ! Результат этого запроса берется не из кэша (кэш пуст) select id, ch from test /* +ANSCACHE */; ! Результат этого запроса берется уже из кэша select id, ch from test /* +ANSCACHE */; !Запрещаем кэширование результатов запроса alter user SYSTEM disable answercache; ! Результат этого запроса берется не из кэша select id, ch from test /* +ANSCACHE */; !Разрешаем кэширование результатов запроса alter user SYSTEM enable answercache; ! Результат этого запроса берется уже из кэша select id, ch from test /* +ANSCACHE */;