Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
.Anatoly.
Member

Откуда: Екатеринбург
Сообщений: 310
Есть тип int или smalldatetime оба занимают по 4 байта.
А сколько памяти будет занимать ячейка каждого типа, если ячейка может принимать значение NULL и если не может?

В первую очередь интересует MS SQL 2005. Но если ситуация изменилась в 2008/2012, то тоже будет здорово об этом узнать.
20 фев 12, 14:49    [12123102]     Ответить | Цитировать Сообщить модератору
 Re: Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
.Anatoly., ???
20 фев 12, 14:53    [12123128]     Ответить | Цитировать Сообщить модератору
 Re: Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
Иванов Александр Александрович
Member

Откуда:
Сообщений: 1136
Недавно опыт провел, значения NULL занимают отведенное им место, согласно предполагаемому типу, т.е. NULL/NOT NULL на объем не влияют. СКОЛЬКО ЯЧЕЙКА ЗАНИМАЕТ ПАМЯТИ ЗАВИСИТ ОТ ТИПА ДАННЫХ, а не от конкретного значения.
А для обработки NULL существет битовая матрица, которая используется при чтении значений. Если для колонки стоит 1, то значение не читается и выводится НУЛЛ, иначе читается значение.
Т.е. ответ: 4 байта будет отведено, не зависимо от возможного значения.
20 фев 12, 15:35    [12123586]     Ответить | Цитировать Сообщить модератору
 Re: Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
.Anatoly.
Member

Откуда: Екатеринбург
Сообщений: 310
kDnZP, спасибо за ссылку, почерпнул много нового.

Но совсем не отражает ситуацию в 2008/2012 сервере.
20 фев 12, 16:21    [12124181]     Ответить | Цитировать Сообщить модератору
 Re: Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
.Anatoly.
Member

Откуда: Екатеринбург
Сообщений: 310
Иванов Александр Александрович, спасибо за ответ.
А какой версией вы пользовались?
На сколько я знаю, в 2008R2, если значение типа int укладывается в 1 байт, то и будет занимать 1 байт.

Кроме того непонятно, где располагается битовая матрица, логично, что для каждой строки должна быть своя битовая матрица, таким образом размер строки из-за каждой колонки должен увеличивается на 1 бит(На самом деле на 1 байт на каждые 8 таких колонок)
20 фев 12, 16:27    [12124262]     Ответить | Цитировать Сообщить модератору
 Re: Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
.Anatoly.
kDnZP, спасибо за ссылку, почерпнул много нового.

Но совсем не отражает ситуацию в 2008/2012 сервере.
Ничего с тех пор не изменилось.

http://msdn.microsoft.com/ru-ru/library/ms189124.aspx
20 фев 12, 16:27    [12124278]     Ответить | Цитировать Сообщить модератору
 Re: Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Но совсем не отражает ситуацию в 2008/2012 сервере.

ну, в 2008-ом появились еще sparse-столбцы.
http://msdn.microsoft.com/en-us/library/cc280604.aspx

а так - то же все.

Posted via ActualForum NNTP Server 1.5

20 фев 12, 16:30    [12124311]     Ответить | Цитировать Сообщить модератору
 Re: Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
Иванов Александр Александрович
Member

Откуда:
Сообщений: 1136
.Anatoly., я на просто 2008 проверял. Вставлял то NULL, то единицы в таблицу, размер ее получался одинаковый
20 фев 12, 16:30    [12124326]     Ответить | Цитировать Сообщить модератору
 Re: Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> На сколько я знаю, в 2008R2, если значение типа int укладывается в 1 байт, то и будет занимать 1 байт.

это вы про vardecimal звон слышали, наверное?

> таким образом размер строки из-за каждой колонки должен увеличивается на 1 бит(На самом деле на 1 байт на
> каждые 8 таких колонок)

да, так и есть.

Posted via ActualForum NNTP Server 1.5

20 фев 12, 16:41    [12124495]     Ответить | Цитировать Сообщить модератору
 Re: Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> На сколько я знаю, в 2008R2, если значение типа int укладывается в 1 байт, то и будет занимать 1 байт.

или о row compression. но это специально надо включать, да и не во всех редакциях доступно.

Posted via ActualForum NNTP Server 1.5

20 фев 12, 16:50    [12124646]     Ответить | Цитировать Сообщить модератору
 Re: Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
.Anatoly.
Member

Откуда: Екатеринбург
Сообщений: 310
daw, спасибо за ссылку.
20 фев 12, 16:51    [12124657]     Ответить | Цитировать Сообщить модератору
 Re: Объем занимаемого места в зависимости от того может ли значение содержать null?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
alexeyvg
Ничего с тех пор не изменилось.

http://msdn.microsoft.com/ru-ru/library/ms189124.aspx

daw
> Но совсем не отражает ситуацию в 2008/2012 сервере.

ну, в 2008-ом появились еще sparse-столбцы.
http://msdn.microsoft.com/en-us/library/cc280604.aspx

а так - то же все.
Я имел в виду, что для типов int или smalldatetime ничего не поменялось по сравнению с тем обсуждением (которое было для сиквела 7 или 2000)
20 фев 12, 17:24    [12125136]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить