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

Откуда: Сибирь, матушка/Москва теща
Сообщений: 235
Сенсационный прорыв M$ в хранении и уплотнении данных!!! (который никем не был замечен :()

Хранение 3 (!) значений в 1 (!) бите!!!!!!
BOL

bit
Integer data type 1, 0, or NULL.

Microsoft® SQL Server™ optimizes the storage used for bit columns.
If there are 8 or fewer bit columns in a table, the columns are stored as 1 byte.
If there are from 9 through 16 bit columns, they are stored as 2 bytes, and so on.

т. е. каждый бит одного байта, может принимать значения 1, 0 и пусто.
Это достигается аппаратной поддержкой недокументированной особенности динамической памяти, которая позволяет заряжать конденсаторы элементарной ячейки до уровня 0.65V, определяя таким образом промежуточное состояние.
Использование этой революционной технологии для аппаратной поддержки алгоритмов нечеткой логики в новой ОС LongHorn, выведет ее на небывалый уровень надежности и адаптивности.
24 мар 03, 11:07    [154553]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
1 апреля будет еще только через 7 дней.
24 мар 03, 12:51    [154649]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
Пусто - это трактовка 0.
24 мар 03, 13:02    [154668]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
_ChaiNik
Member

Откуда: Сибирь, матушка/Москва теща
Сообщений: 235
Вот в этом и вопрос, каким это образом они трактуют NULL. Для этого необходимо иметь еще хотябы один бит информации. В BOL об этом не слова, и заявления о том, что для хранения 8 столбцов, которые могут принимать значение 0,1 и NULL им хватает 1 байта, мягко говоря, вводит в заблуждение...
24 мар 03, 15:45    [154905]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31598
Ну вообще-то в БУЛ написано для целого:
int
Integer (whole number) data from -2^31 (-2,147,483,648) through 2^31 - 1 (2,147,483,647). Storage size is 4 bytes. Хотя Storage size is 4 bytes быть не может. Нулл-то тоже нужно хранить.

Просто в описании типов они пишут занимаемое место для данных, а для нуллов на странице есть спец. место. (в конце).
24 мар 03, 17:14    [155070]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
Glory
Member

Откуда:
Сообщений: 104760
Это достигается аппаратной поддержкой недокументированной особенности динамической памяти, которая позволяет заряжать конденсаторы элементарной ячейки до уровня 0.65V, определяя таким образом промежуточное состояние.

Ага, и все базы будем в динамической памяти хранить.
Да ежли бы у меня было стоко оперативной памяти, скоко дискового пространства ...
24 мар 03, 17:17    [155079]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 5006
>Хранение 3 (!) значений в 1 (!) бите!!!!!!
Access позволяет хранить три значения в 1 бите.
-1
0
Null
24 мар 03, 17:21    [155087]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
Glory
Member

Откуда:
Сообщений: 104760
2Senin Viktor
Прямо таки в одном бите данных ???? Или признак NULL храниться таки отдельно ???
24 мар 03, 17:26    [155097]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
vap
Member

Откуда:
Сообщений: 487
У каждой строки таблицы есть битовое представление NULL значений,
и если бит столбца установлен в 1, то значение в этом столбце - NULL,
выводы - NOT NULL поля работают немного быстрее.
24 мар 03, 17:31    [155108]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
_ChaiNik
Member

Откуда: Сибирь, матушка/Москва теща
Сообщений: 235
2 Glory

Дык и для дискового простарнства таж фигня - полузамагниченные участки и недорезанные питы :)
24 мар 03, 19:37    [155271]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 5006
2Glory
>Прямо таки в одном бите данных ???? Или признак NULL храниться таки отдельно ???

Черт его знает.
Ставим тип данных: Логический
Значение по-умолчанию: Null
В итоге при создании новой записи можно оставить Null(флажок затенен), True or False. Корректно обрабатываются запросы и т.п.
Я использую эту фичу для принудительного обновления пользователем логического поля (если поле Null - выдается сособщение укажи значение)
А как проверить в Акесе где он че хранит и как, большая проблема.
25 мар 03, 10:12    [155547]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
_ChaiNik
Member

Откуда: Сибирь, матушка/Москва теща
Сообщений: 235
2 vap

У каждой строки таблицы есть битовое представление NULL значений,
и если бит столбца установлен в 1, то значение в этом столбце - NULL


а откуда такая инфа, кинь ссылку
а то чет энтот вопрос мине за нутро береть :)
25 мар 03, 13:20    [155859]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
vap
Member

Откуда:
Сообщений: 487
поищите в гугле по ключевым словам sql bitmap row null

Вот одно из описаний.
SQL Server 7.0's tracking of nulls in a special bitmap in each row gives you several advantages over SQL Server 6.5. One advantage is that type bit columns can now be null-able. Also, columns that allow nulls are no longer considered variable-length fields. Unless the column is of a variable-length datatype, a column that is null will use the full amount of space; this way, a column of type int not null will always use exactly 4 bytes, whether it contains a null or not. Because SQL Server 6.5 treated nulls as zero-length strings, you could not specify a true zero-length field, such as a character string with no characters (an empty string). In SQL Server 7.0, because nulls have their own means of storage, you can have true empty strings. A varchar(20) field, for example, can now have anywhere from 0 characters to 20 characters.

http://www.sqlmag.com/Articles
25 мар 03, 13:41    [155889]     Ответить | Цитировать Сообщить модератору
 Re: Технологический прорыв компании Microsoft  [new]
jimmers
Member

Откуда: Санкт-Петербург - New York City
Сообщений: 5069
Я не понимаю предмета спора. Если кто-то ясно опишет тезис будет здорово.
25 мар 03, 14:20    [155930]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить