Как SQL Server внутренне обрабатывает Varchar? - PullRequest
3 голосов
/ 18 февраля 2012

Я хочу знать, как SQL Server обрабатывает varchar динамическую длину и внутреннее хранилище.

Есть ли смысл использовать Varchar, если я знаю, что у меня фиксированная длина символа в столбце?

Я знаю разницу между CHAR и VARCHAR, но как лучше всего использовать большие базы данных для проектирования баз данных CHAR или VARCHAR?

1 Ответ

3 голосов
/ 18 февраля 2012

CHAR выделяет свой размер в строке, VARCHAR хранит реальный размер строки (2 байта), а затем реальную строку, поэтому накладные расходы на varchar составляют +2 байта, а накладные расходы на CHAR - это его размер минус реальная длина строки.Если в varchar хранится значение NULL - его размер в дБ равен нулю.

См. Анатомия записи

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

отличается и проще, чем SQL Server 2000который имел только один бит на обнуляемый столбец), это позволяет оптимизировать при чтении столбцов, которые являются массивом смещения столбцов переменной длины NULL, два байта для подсчета столбцов переменной длины, два байта на столбец переменной длины, давая смещение к концуТег версионирования значения столбца - это только в SQL Server 2005 и представляет собой 14-байтовую структуру, которая содержит метку времени плюс указатель на хранилище версий в базе данных tempdb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...