# Buffer

QVD 文件可通过 buffer 前缀自动创建和维护。该前缀可用于脚本中大多数 LOAD 和 SELECT 语句。这表示 QVD 文件可用于缓存/缓冲该语句产生的结果。

语法：

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

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

如果未使用任何选项，则首次执行脚本时创建的 QVD 缓冲将无限期使用。

默认情况下，QVD 缓冲存储在 C:\ProgramData\QlikTech\QlikView\Buffers 中。

创建脚本的文档在整个脚本执行过程不再引用时，或者创建脚本的文档不再存在时，通常会移除 QVD缓冲。

参数：

Buffer 参数

| 参数 | 说明 |
| --- | --- |
| incremental | incremental 选项可实现仅读取基础文件的一部分。文件先前大小存储在 QVD 文件中的 XML 页眉中。这对日志文件特别有用。上一步载入的全部记录都可从 QVD 文件读取，而后续新记录可从原始数据源读取，这样就可创建一个 QVD 更新文件。注意，incremental 选项只能与 LOAD 语句和文本文件，以及旧数据发生更改或被删除而导致无法使用增量加载的地方！ |
| stale [after] amount [(days \| hours)] | amount 即指定时间周期的数字。可能要使用小数。如果省略，则假定单位为天数。<br>stale after 选项通常与 DB 源一起使用，DB 源在初始数据上并无简单的时间戳。相反，您可以指定 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;`

## 了解详情

* [Load](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Load.htm)
* [Select](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptRegularStatements/Select.htm)
* [QVD 文件](https://help.qlik.com/zh-CN/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/QVD_files.htm)