Есть ли недостаток в предоставлении дополнительного размера / длины столбцам вашей базы данных? - PullRequest
9 голосов
/ 28 апреля 2011

Я обычно устанавливаю все свои varchars на 255, чтобы быть в безопасности. Имеет ли это какое-то значение с точки зрения дискового пространства или чего-либо еще? Есть ли какой-то недостаток в том, чтобы иметь больше полей varchars / ints / other, чем вам больше всего нужно?

Ответы [ 5 ]

5 голосов
/ 28 апреля 2011

Если вы разрешите 255 символов, тогда кто-то может использовать 255 символов. И поэтому каждый отчет и экран ввода данных в режиме онлайн должны иметь возможность обрабатывать 255 символов. Грязное.

У меня есть реальный пример: в нашей системе кто-то решил, что названия отделов могут быть длиной 200 символов. Когда кто-то вводил довольно длинное значение, он искажал макет нескольких HTML-форм, отталкивая другие поля с правой стороны и делая их недоступными. Поэтому потребовалась некоторая корректирующая работа ...

4 голосов
/ 29 апреля 2011

Для загрузки больших объемов данных в память требуется больше времени и больше перемещений диска. Определение больших максимальных размеров для столбцов увеличивает размер строк таблицы. Для многих серверов СУБД строки таблицы являются переданными элементами. Поэтому определение слишком толстых столбцов замедляет процесс.

Этот эффект минимален для VARCHAR предметов. Но VARCHAR немного медленнее, чем типы данных, такие как целые числа. Восемь байтовых целых чисел занимают в четыре раза больше времени, чем двухбайтовые целые. Таким образом, если база данных проектируется для максимальной производительности, ограничение столбцов данных до фактически необходимого диапазона ускорит процесс. Степень этого эффекта зависит от того, является ли узкое место в канале диска.

Другим возможным узким местом является канал, который связывает сервер с клиентом, часто это сетевой канал. Узкие места в этом канале могут быть уменьшены запросами, которые не запрашивают данные, которые никогда не будут использоваться, но здесь есть компромисс между запросом данных только тогда, когда вам это нужно, и совершением слишком большого количества циклов.

Существует также компромисс между проектированием для оптимальной производительности и перепроектированием в ожидании меняющихся требований.

3 голосов
/ 28 апреля 2011

Нет, это не влияет на дисковое пространство.Если вы выбрали какой-либо столбец varchar, который будет иметь переменную длину от 0 до 65535. Если вы объявите его 255 или 65535, они оба одинаковы.если в вашей таблице нет столбца переменной длины, ваши запросы будут быстрыми.

1 голос
/ 28 апреля 2011

С таким дешевым дисковым пространством я, как правило, не так обеспокоен этим, как много лет назад. Тем не менее, мелочи складываются в VLDB.

0 голосов
/ 28 апреля 2011
...