Кэш SQL-транслятора

Кэширование – это способ повышения скорости обработки данных, хранящихся на внешних носителях.

Кэш SQL-транслятора состоит из набора записей в оперативной памяти. Каждая запись кэша является копией соответствующего элемента данных в БД. Все записи кэша имеют идентификатор, устанавливающий соответствие между элементами данных в кэше и их копиями в БД.

Если нужные данные не найдены в кэше, то они извлекаются из БД в кэш, и становятся доступным для последующих обращений к ним.

Память кэша ограничена в объёме, поэтому при добавлении в него новых данных в случае отсутствия в кэше свободного места записи, к которым было мало обращений, вытесняются из кэша и заменяются добавляемыми записями.

В случае модификации элементов данных в кэше синхронно выполняется их обновление и в БД, возможно, с некоторой задержкой.

SQL-транслятор выполняет кэширование информации:

  • о пользователях (владельцах объектов) БД;

  • о столбцах SQL-запросов;

  • о хранимых процедурах SQL-запросов;

  • о параметрах хранимых процедур SQL-запросов;

  • о кодовых страницах;

  • о таблицах SQL-запросов.

Размеры кэшей SQL-транслятора задаются (при необходимости) при создании БД и могут быть изменены в процессе её эксплуатации. Если размеры кэшей не заданы, используются значения по умолчанию.

Примечание

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