Насколько большой может быть строка SQL Server, прежде чем она станет проблемой? - PullRequest
2 голосов
/ 25 марта 2010

Иногда я сталкиваюсь с этим ограничением при использовании SQL Server 2000, что размер строки не может превышать 8 Кбайт. SQL Server 2000 на самом деле не является современным, но он все еще находится в рабочем коде, и из-за денормализации некоторых таблиц это является проблемой.

Однако, похоже, что это не проблема SQL Server 2005. По крайней мере, он не будет жаловаться, что размеры строк больше 8 КБ, но что происходит вместо этого и почему это было проблемой в SQL Server 2000?

Нужно ли мне заботиться о росте моих рядов? Стоит ли избегать больших рядов? Являются ли varchar (max) и varbinary (max) решением или дорогостоящими с точки зрения размера базы данных и / или процессорного времени? Почему меня вообще волнует указание длины определенного столбца, когда кажется, что это лишь вопрос времени, когда кто-то собирается достичь этого верхнего предела?

Ответы [ 2 ]

4 голосов
/ 25 марта 2010

Ознакомьтесь с ограничением размера строки SQL Server 2005 здесь:

Как Sql Server 2005 обходит ограничение размера строки в 8 КБ

SQL Server разделит данные строки, если они больше 8 КБ, и сохранит лишние данные на второй странице данных, используя указатель на нее в исходной. Это повлияет на производительность запросов и объединений.

1 голос
/ 25 марта 2010

Все еще существует ограничение размера строки - минимальный размер строки не может превышать 8060 байтов

CREATE TABLE Table1 (
    col1 char(2000),
    col2 char(2000),
    col3 char(2000),
    col4 char(2000),
    col5 char(2000)
);

Creating or altering table 'Table1' failed because the minimum row size would be
10007, including 7 bytes of internal overhead. This exceeds the maximum allowable
table row size of 8060 bytes.

Когда вы используете varchar (MAX), строки хранятся не внутри строки, а в другом месте, поэтому вы можете хранить более 8060 байт. Хранение большого количества больших строк, конечно, дорого. Просто сделайте расчеты, и вы увидите, что он быстро займет много места на диске. Но если вам нужно хранить большие строки, тогда все в порядке. База данных может справиться с этим.

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