긴 값 열

적용 대상: Windows | Windows Server

긴 값 열

JET_coltypLongText 및 JET_coltypLongBinary ESE 열 형식을 long 값 열 형식이라고 합니다. 이러한 열은 주 인덱스에서 멀리 떨어진 별도의 B+ 트리에 저장될 수 있는 큰 문자열 및 큰 이진 개체입니다. long 값이 기본 레코드와 별도로 저장되면 내부적으로 LID(Long Value ID) 및 바이트 오프셋에 키가 지정되고 스트림으로 액세스됩니다. JET_COLUMNDEF 구조체의 coltyp 멤버가 JET_coltypLongText 또는 JET_coltypLongBinary 설정된 JetAddColumn 호출에서 긴 값 열이 테이블에 추가됩니다. 긴 텍스트 또는 긴 이진 열 값의 최대 크기는 2GB -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에 대한 오프셋은 JET_SETINFO 구조체의 ibLongValue 멤버(JetSetColumn의 경우) 또는 JET_SETCOLUMN 구조체의 ibLongValue 멤버(JetSetColumns의 경우)에 설정됩니다. JET_SETCOLUMNpvData 멤버와 JetSetColumn 호출의 pvData 매개 변수에는 긴 값 데이터가 포함됩니다. 긴 값 열에 대한 업데이트 트랜잭션 내에서 수행해야 합니다.

긴 값 데이터는 애플리케이션이 JET_bitSetSeparateLV 설정하거나 JET_bitSetIntrinsicLV 때 항상 별도의 테이블에 저장됩니다. 그렇지 않으면 추론적으로 결정됩니다. ESE는 1024바이트보다 크거나 레코드에 저장된 경우 레코드가 단일 데이터베이스 페이지에 맞지 않는 경우 구분된 긴 값을 저장합니다.

다음 다이어그램은 별도의 테이블에 저장된 긴 값 데이터를 보여줍니다. 긴 값이 레코드 외부에 저장되면 해당 값을 참조하기 위해 새 긴 값 ID가 만들어집니다. 이렇게 하면 여러 레코드가 동일한 열 값을 참조할 수 있습니다. 데이터에서 두 개 이상의 레코드가 동일한 긴 값 데이터를 가리키는 경우 데이터에 대한 참조 수가 증가합니다.

ESE_Documentation_longvaluedtree2

또한 ESE는 여러 레코드가 각 레코드에 고유한 정보 복사본이 있는 것처럼 동일한 큰 이진 개체를 참조할 수 있도록 하는 단일 instance 저장소 기능을 지원하므로 열 값 데이터의 중복 복사본을 방지할 수 있습니다. 이 기능은 prep 매개 변수에 설정된 JET_prepInsertCopy 옵션을 사용하여 JetPrepareUpdate 호출에서 사용하도록 설정됩니다.