Вътре в системата за съхранение:Анатомия на запис
Това е за SQL Server 2005
- заглавка на записа
- 4 байта
- два байта метаданни на записа (тип запис)
- два байта, сочещи напред в записа към растерната карта NULL
- част от записа с фиксирана дължина, съдържаща колоните, съхраняващи типове данни с фиксирана дължина (напр. bigint, char(10), datetime)
- NULL растерна карта
- два байта за броя на колоните в записа
- променлив брой байтове за съхраняване на един бит на колона в записа, независимо дали колоната е нула или не (това е различно и по-просто от SQL Server 2000, който имаше само един бит на колона с нула)
- това позволява оптимизиране при четене на колони, които са NULL
- Масив с изместване на колони с променлива дължина
- два байта за броя на колоните с променлива дължина
- два байта на колона с променлива дължина, даващи отместване до края на маркера за версия на стойността на колоната
- това е само в SQL Server 2005 и е 14-байтова структура, която съдържа времева марка плюс указател към хранилището на версиите в tempdb
И така, за един знак (8000)
- 4 байта (заглавка на записа)
- 8000 фиксирана дължина
- 3 нулеви растерни изображения
- 2 байта за броене на променлива дължина
- 14 времеви печат
Въпреки това, ако сте имали 40 varchar(200) колони
- 4 байта (заглавка на записа)
- 0 фиксирана дължина
- 6 нулеви растерни изображения
- 2 байта за броене на променлива дължина
- 202 x 40 =8080
- 14 времеви печат
Общо =8080 + 4 + 6 + 2 + 14 =8106. WTF? Получавате предупреждение, когато създадете тази таблица
Не бих се зациклил много на това:тази информация е не практична ежедневна стойност