# Buffer

Файлы QVD могут создаваться и обслуживаться автоматически посредством префикса buffer. Этот префикс может использоваться на большинстве операторов LOAD и SELECT в скрипте. Он указывает на то, что файлы QVD используются для кэширования/буферизации результата оператора.

Синтаксис:

Buffer [(option [ , option])] ( loadstatement | selectstatement )

option::= incremental | stale [after] amount [(days | hours)]

Если не используется ни один параметр, буфер QVD, созданный при первом выполнении скрипта, будет использоваться в течение неопределенного времени.

Файл буфера находится в подпапке Буферы, обычно это C:\ProgramData\Qlik\Sense\Engine\Buffers (установка сервера) или C:\Users\{user}\Documents\Qlik\Sense\Buffers (Qlik Sense Desktop).

Имя файла QVD является вычисляемым именем (160-разрядными шестнадцатеричными случайными данными всего следующего оператора LOAD или SELECT и другой специфической информацией). Это означает, что буфер QVD будет недействительным при любых изменениях в следующем операторе LOAD или SELECT.

Обычно буферы QVD удаляются, если к ним больше не обращаются ни на каком этапе выполнения всего скрипта в приложении, его создавшем, либо в том случае, если приложение, его создавшее, уже не существует.

Аргументы:

Аргументы

| Аргумент | Описание |
| --- | --- |
| incremental | Параметр incremental дает возможность прочитать только часть базового файла. Данные о предыдущем размере файла находятся в заголовке XML файла QVD. Это особенно полезно при работе с файлами журнала. Все записи, загруженные в предыдущий раз, считываются из файла QVD, в то время как последующие новые записи считываются из оригинального источника, в результате чего создается обновленный файл QVD.<br><br>Параметр incremental можно использовать только вместе с предложениями LOAD и текстовыми файлами. Инкрементную нагрузку нельзя использовать в случае изменения или удаления старых данных. |
| stale [after] amount [(days \| hours)] | amount — число, обозначающее период времени. Могут использоваться десятичные числа. Единицей измерения являются дни, если не указано.<br><br>Параметр stale after обычно используется с источниками баз данных, если нет простой метки времени на оригинальных данных. Вместо этого можно указать, насколько старым может быть используемый снимок QVD. Предложение stale after просто указывает период времени с момента создания буфера QVD, после которого он будет считаться недействительным. До этого времени в качестве источника данных будет использоваться буфер QVD, а после этого — оригинальный источник данных. Файл буфера QVD будет автоматически обновлен, и начнется новый период. |

Ограничения:

Среди многочисленных ограничений необходимо отметить наиболее важное, которое заключается в том, что в центре любого составного оператора должен быть оператор для файла LOAD либо SELECT.

Пример 1:

`Buffer SELECT * from MyTable;`

Пример 2:

`Buffer (stale after 7 
 days) SELECT * from MyTable;`

Пример 3:

`Buffer (incremental) LOAD 
 * from MyLog.log;`