2012-02-18 3 views
3

SQL Server가 varchar 동적 길이와 저장소를 내부적으로 처리하는 방법을 알고 싶습니다.SQL Server는 Varchar를 내부적으로 어떻게 처리합니까?

Varchar 문자가 고정 길이라는 것을 알고 있다면 유용할까요?

나는 CHARVARCHAR의 차이를 알고 있지만, 데이터베이스 설계 CHAR 또는 VARCHAR에 대한 큰 데이터베이스에서 사용하는 가장 좋은 방법은 무엇입니까?

답변

3

CHAR은 실제 크기의 문자열 (2 바이트)을 저장 한 다음 실제 문자열을 저장하므로 varchar의 오버 헤드는 +2 바이트이며 CHAR의 오버 헤드는 - 크기에서 실제 문자열 길이를 뺀 것입니다. varchar에 NULL 값이 저장된 경우 - db의 크기는 0입니다.

는 NULL 가변 길이 열 오프셋 배열되어 열을 읽을 때 널 (NULL) 컬럼 당 1 비트 만 해당) 이 최적화를 허용했다 SQL 서버 2000에 비해 Anatomy of the Record

record header 
    4 bytes long 
    two bytes of record metadata (record type) 
    two bytes pointing forward in the record to the NULL bitmap 
fixed length portion of the record, containing the columns storing data types that have fixed lengths (e.g. bigint, char(10), datetime) 
NULL bitmap 
    two bytes for count of columns in the record 
    variable number of bytes to store one bit per column in the record, regardless of whether the column is nullable or not (this is 

다른 간단보기 가변 길이 열 개수에 대한 2 바이트 가변 길이 열 당 2 바이트, 열 값 끝까지의 오프셋 제공 버전 관리 태그 this SQL Server 2005에만 있으며 타임 스탬프와 버전 저장소에 대한 포인터가 포함 된 14 바이트 구조입니다. tempdb

관련 문제