長數值資料行
適用于: 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)
long 值資料是藉由指出長值 Blob 中的位移,以及 Blob 中 long 值資料的長度來設定。 long 值Blob 的位移是在JetSetColumn) 之 JET_SETINFO 結構 (的 ibLongValue成員中設定,或是JetSetColumns) 之JET_SETCOLUMN結構 (的 ibLongValue成員。 呼叫JetSetColumn中的pvData成員JET_SETCOLUMN和pvData參數包含長值資料。 更新至長值資料行必須在交易內執行。
長數值資料一律會儲存在個別資料表中,就是當應用程式設定JET_bitSetSeparateLV或JET_bitSetIntrinsicLV時,否則會啟發學習決定。 如果長度值大於 1024 位元組,則 ESE 會儲存長值,如果記錄儲存在記錄中,則儲存在單一資料庫頁面上,則為 。
下圖顯示儲存在個別資料表中的長數值資料。 當 long 值儲存在記錄外部時,會建立新的長值識別碼來參考其值。 這可讓多個記錄參考相同的資料行值。 如果資料中的一筆以上的記錄指向相同的長值資料,則會增加資料的參考計數。
ESE 也支援單一實例存放區功能,可讓多個記錄參考相同的大型二進位物件,就像每個記錄都有自己的資訊複本一樣;因此,避免重複的資料行值資料複本。 此功能會在 呼叫 JetPrepareUpdate 時啟用,並在 prep 參數中設定JET_prepInsertCopy選項。