共用方式為


長數值數據行

適用於: Windows |Windows Server

長數值數據行

ESE 資料行類型JET_coltypLongText和JET_coltypLongBinary稱為長數值數據行類型。 這些數據行是大型字串和大型二進位物件,可儲存在與主要索引不同的 B+ 樹狀結構中。 當 long 值與主要記錄分開儲存時,會在內部以長值識別碼 (LID) 和位元組位移作為數據流進行索引鍵。 在呼叫 JetAddColumn 時,會將長數值數據行新增至數據表,並將 JET_COLUMNDEF 結構 coltyp 成員設為 JET_coltypLongText 或 JET_coltypLongBinary。 長文字或長二進位數據行值的大小上限為 2 GB -1。

ESE 支援附加、位元組範圍覆寫,以及設定長數值數據行的大小作業,以支援這些數據行類型的有效數據流實作。 根據預設,如果長數值數據大於 1024 個字節,則長數值數據會儲存在個別的 B+ 樹狀結構中,或者當長數值數據儲存在記錄中時,記錄不符合單一資料庫頁面的大小。 應用程式可以選擇覆寫預設行為,方法是設定選項將長數值數據儲存在記錄中(JET_bitSetIntrinsicLV),或強制將它們儲存在個別的 B+ 樹狀結構中(JET_bitSetSeparateLV)。 這些值是在 jetSetColumn grbit 参數中設定,或 呼叫 jetSetColumns 時所使用的 grbit 成員 JET_SETCOLUMN,如下所示:

  • 附加: (JET_bitSetAppendLV)

  • 位元組範圍覆寫: (JET_bitSetOverwriteLV)

  • 設定大小: (JET_bitSetSizeLV)

  • 強制分離: (JET_bitSetSeparateLV)

  • 儲存在記錄中: (JET_bitSetIntrinsicLV)

長值數據是藉由指出長值 Blob 的位移,以及 Blob 中長數值數據的長度來設定。 長值 Blob 的位移是在 JET_SETINFO 結構的 ibLongValue 成員中設定的 (適用於 JetSetColumn), 或 ibLongValueJET_SETCOLUMN 結構的成員 (適用於 JetSetColumns)。 呼叫 JetSetColumn 包含長數值數據時,pvData 成員 JET_SETCOLUMNpvData 參數。 對長數值數據行的更新必須在交易內執行。

長數值數據一律會儲存在個別數據表中,是當應用程式設定JET_bitSetSeparateLV或JET_bitSetIntrinsicLV時,否則會啟發式決定。 ESE 會儲存大於 1024 個字節的長值,或者如果記錄儲存在記錄中,則記錄不符合單一資料庫頁面的大小。

下圖顯示儲存在個別數據表中的長數值數據。 當 long 值儲存在記錄外部時,會建立新的長值標識符來參考其值。 這可讓多個記錄參考相同的數據行值。 如果數據中的一筆以上的記錄指向相同的長數值數據,則會增加數據的參考計數。

ESE_Documentation_longvaluedtree2

ESE 也支援單一實例存放區功能,允許多個記錄參考相同的大型二進位物件,就像每個記錄都有自己的資訊複本一樣:因此,避免數據行值數據的復本重複。 這項功能是在呼叫 JetPrepareUpdate 時啟用,並在 prep 參數中設定JET_prepInsertCopy選項。