TABLE.Cacheable


Синтаксис

PROPERTY [RW, NE] Cacheable: SCAL[4];

Описание

Режим кэширования данных таблицы БД на стороне клиента в клиент-серверной модели. Возможные значения режимов перечислены в наборе констант TABLE.Cacheable. При обращении по записи можно

во всех остальных случаях исключение 978.

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

Кэш таблицы БД используется только при выполнении всех перечисленных условий:

  1. кэширование таблицы БД активировано
  2. режим доступа к данным - adm_SOFT
  3. режим TABLE_FILTER_MODE имеет значение TABLE_FILTER_MODE_ON ИЛИ на таблицу не воздействует ни собственный, ни транзитивный табличный фильтр
  4. таблица БД либо не двойная, либо свойство TABLE.CacheFilter имеет непустое значение

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

Особенности и ограничения кэширования:

  1. кэш сбрасывается с последующей его перечиткой при:
    1. изменении значения TABLE.Filter, TABLE.TransitiveFiltersAreActive
    2. изменении базового среза. Например, выполнилась RENEWDATALAYER; завершился TRY с режимом adm_SOFT и базовый срез пропал - последующее включение adm_SOFT породит новый базовый срез и перечитку кэш; и.т.д.
  2. операции модификации запрещают использовать кэш до конца транзакции
  3. операции, устанавливающие разделяемую блокировку, например, GETLASTVERSION или позиционирование в режиме adm_RIDGE, не используют кэш, а выполняют серверный запрос. Если полученный экземпляр записи не соответствует базовому срезу транзакции, использование кэша данной таблицы запрещается до конца транзакции
  4. в момент установки запрета использования кэша ASL выдает предупреждение ProhibToCacheFile.

Свойство добавлено в версии 14.260.010.