# Buffer

透過 buffer 前置詞可以自動建立和維護 QVD 檔案。這個前置詞可以用於指令碼的大多數 LOAD 和 SELECT 陳述式。其表示 QVD 檔案會用於快取/緩衝陳述式的結果。

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

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

如果不使用任何選項，則指令碼第一次執行所建立的 QVD 緩衝區就無使用期限。

緩衝區檔案儲存在 Buffers 子資料夾中，通常位於 C:\ProgramData\Qlik\Sense\Engine\Buffers (server installation) 或 C:\Users\{user}\Documents\Qlik\Sense\Buffers (Qlik Sense Desktop)。

QVD 檔案的名稱是一個計算名稱，整個後續 LOAD 或 SELECT 陳述式和其他區別資訊的 160 位元的十六進位雜湊。這表示 QVD 緩衝區會被後續 LOAD 或 SELECT 陳述式中的任何變更視為無效。

建立 QVD 緩衝區的應用程式之中的完整指令碼執行完全不再參考該緩衝區時，或者建立該緩衝區的應用程式不再存在時，一般都會移除該緩衝區。

引數

| 引數 | 描述 |
| --- | --- |
| 累加 | incremental 選項能夠唯讀基礎檔案的一部分。先前的檔案大小儲存於 QVD 檔案的 XML 標頭中。這特別適用於記錄檔。先前載入的所有記錄都是從 QVD 檔案讀取的，而後續的新記錄則是從原始來源讀取的，最後會建立更新的 QVD 檔案。<br><br><br>incremental 選項只能用於 LOAD 陳述式和文字檔案。若已變更或已刪除舊資料，則無法使用增量載入。 |
| stale [after] amount [(days \| hours)] | amount 是指定時間週期的數字。可能會使用 Decimals。如果未指定單位，一律假設單位為天數。<br><br>stale after 選項一般會用於其中原始資料沒有簡單時間戳記的資料庫來源。而非指定 QVD快照可以用多久時間。stale after 子句只是陳述從建立 QVD 緩衝區之後經過多久才會失效的時間週期。在這段時間之前，將使用 QVD 緩衝區做為資料的來源，過了這段時間之後，則將使用原始資料來源。此後 QVD 緩衝區檔案將自動更新，並且重啟新的週期。 |

其中有許多限制，最顯著的是任何複雜陳述式的核心都必須要有 LOAD 檔案或 SELECT 陳述式。

`Buffer SELECT * from MyTable;` `Buffer (stale after 7 
 days) SELECT * from MyTable;` `Buffer (incremental) LOAD 
 * from MyLog.log;`