smallint vs integer

  • Автор темы Автор темы Rynor
  • Дата начала Дата начала

Rynor

stay hungry
smallint vs integer

Уважаемые, в ходе рефакторинга БД обнаружил много int полей, которые, исходя из реальных данных, логично сменить на smallint.
База относительно большая, таблицы от 1K до нескольких М записей.

Но получил возражение, что хотя smallint и экономит место на диске, зато увеличивает время вычислений сервером MySQL, так как smallint приводится к integer. Платформа 32-разрядная.

Встретил и такое мнение: http://forum.mysqlperformanceblog.com/s/m/640/
Computation is always done using signed 64bit integer in MySQL (even for 32bit)
То есть даже для 32-разрядных платформ идёт преобразование в 64-разрядный integer? Что-то верится с трудом.

В документации тема smallint vs integer не раскрыта, прошу помощи!

А вопрос такой: есть ли смысл переводить поля в smallint?

Заранее спасибо за помощь!
 
Даже если бы это (smallint приводится к integer) было правдой (в чём я сомневаюсь) то прирост скорости можно было бы ожидать на 486-м процессоре или первых пеньках, а в современных компах с большим кешем и со всякими MMX-ами и прочими "фигнюшками" большой разницы не увидишь...

Видимо такие теории стали рождаться после провала 24-х битного цвета когда оказалось что увеличение до 32-х бит вовсе не будет медленнее...

А уж со стороны здравого смысла и вовсе очевидно что там где можно юзать smallint лучше юзать именно его (а не придумывать себе не существующих теорий)
 
Тут теории быть не может, или smallint приводится, или нет :)

Если да, то операции со smallint могут быть медленнее... теоретически, я не эксперт.

Речь идёт о современных серверах под большой нагрузкой, из-за чего вопросы оптимизации стоят серьёзно. Какие уж тут пеньки.
 
Уважаемые, в ходе ремонта автомобиля обнаружил много чеков с суммами, включающими копейки, которые, исходя из реальных данных, логично логично округлить до рублей.
Сумма за ремонт относительно большая, счета от 1K до нескольких М рублей.

Помогите, люди добрые, сэкономить!
 
Фанат, смешно, спасибо, но. Тогда уж пиши - бред, нет такого приведения smallint к integer. Или если есть, то - "не смеши народ, экономишь на спичках". А то у тебя неадекватное сравнение может получиться. Я конкретику спрашиваю, а не общий взгляд.

Вот в smallint я конкретику вижу, он мне сэкономил много сот мегабайт, но хочется убедительно разрулить возражение, описанное в первом посте.
 
Автор оригинала: Rynor
Вот в smallint я конкретику вижу, он мне сэкономил много сот мегабайт, но хочется убедительно разрулить возражение, описанное в первом посте.
Это посмотреть руки дошли, а посмотреть стало быстрее работать или медленнее даже в мыслях не было ?
 
А с чего ты взял, что я про приведение smallint к integer?
Если ты не понял, то я про соотношение этой "экономии" и размера остальной базы.
 
Vladson
Было. Методики тестирования не было - запросов много всяких разных, а времени мало. Засим быстро прибёг с поклоном. Но вижу придёца тестить самому ;)


Фанат
Я понял. Но это общие слова. Про экономию я и сам написать в состоянии, может не так смешно получится, но суть та же.
 
Rynor
Вот такой вопрос возник, вы с данными какие то математический операции при выборке производите или просто выборки?

Вполне возможно на таблицах с миллионами записей будет выигрыш в пространстве необходимом для для хранения INT(4 байта) vs SMALLINT(2 байта) а если у вас таблица занимает мегабайты то это не принципиально :)
 
Как правило, просто выборки. Буду тестировать, так как ответ так и не получил.
 
Сверху