Использование памяти в SQL Server? - PullRequest
1 голос
/ 04 мая 2011

В последнее время я размышлял над дизайном базы данных, и у меня возник следующий вопрос:

Когда для типа, скажем varchar (max), для столбца задано 2 ГБ пространства, выделяемого каждый раз, когда строкавставлен?

Или пространство, выделенное на сервере, равно количеству данных в столбце?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

Тип данных varchar в SQL Server и в других местах означает примерно символьные данные переменной длины.max или любое другое постоянное значение представляет его верхнюю границу, а не абсолютный размер.Итак, ваше последнее наблюдение верно:

пространство, выделенное на сервере, равное количеству данных в столбце

Теперь, если вы определите что-то вроде char(200)(обратите внимание на отсутствие var перед char), тогда да, 200 символов выделяются независимо от того, сколько данных (до 200 символов) вы храните в этом поле.Между прочим, максимальная верхняя граница 1011 * для типа данных char составляет 8000.

2 голосов
/ 04 мая 2011

Конечно, нет :)

Varchar(max) - это убитый гибридный тип данных (если вы не возражаете, если я немного откровенен):

  • Сохраняется с остальными столбцами в строке, если общая длина строки не превышает 8KB limit
  • В противном случае сохраняется какклякса.BLOB-объект (TEXT, IMAGE) занимает столько же, сколько его длина.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...