Кэш SQL-транслятора
Кэширование – это способ повышения скорости обработки данных, хранящихся на внешних носителях.
Кэш SQL-транслятора состоит из набора записей в оперативной памяти. Каждая запись кэша является копией соответствующего элемента данных в БД. Все записи кэша имеют идентификатор, устанавливающий соответствие между элементами данных в кэше и их копиями в БД.
Если нужные данные не найдены в кэше, то они извлекаются из БД в кэш, и становятся доступным для последующих обращений к ним.
Память кэша ограничена в объёме, поэтому при добавлении в него новых данных в случае отсутствия в кэше свободного места записи, к которым было мало обращений, вытесняются из кэша и заменяются добавляемыми записями.
В случае модификации элементов данных в кэше синхронно выполняется их обновление и в БД, возможно, с некоторой задержкой.
SQL-транслятор выполняет кэширование информации:
-
о пользователях (владельцах объектов) БД;
-
о столбцах SQL-запросов;
-
о хранимых процедурах SQL-запросов;
-
о параметрах хранимых процедур SQL-запросов;
-
о кодовых страницах;
-
о таблицах SQL-запросов.
Размеры кэшей SQL-транслятора задаются (при необходимости) при создании БД и могут быть изменены в процессе её эксплуатации. Если размеры кэшей не заданы, используются значения по умолчанию.
Примечание
Описанные выше очереди ядра СУБД (очереди файлов, таблиц, столбцов и др.), по сути, также являются кэшируемыми данными. Ведение двух, частично дублирующих друг друга кэшей, вызвано тем, что SQL-транслятор может запускаться в ОС как отдельный процесс. В этом случае ведение собственного кэша ускоряет трансляцию SQL-запросов и снижает нагрузку на ядро СУБД.