@god_mode_admin

Байты и типы данных, в чём фишка?

Читая мануалы и комменты периодически натыкаюсь на сообщения что такой-то тип данных в Mysql занимает столько-то байт, например вроде datetime 8 а timestamp 4
На что это влияет никак понять не могу на скорость выборки или же на размер БД на жёстком диске и сколько можно сэкономить? INT иногда указывают не 11 а 6 например - тут какая экономия?
Если взять разницу в 4 байта то 1 Mb выходит я экономлю на каждых 262144 записях... не густая экономия мне кажется. Или я не прав?
  • Вопрос задан
  • 206 просмотров
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev
software engineer
на 262144 записях может не густая, но это у вас очень небольшая база и странная, поскольку в базе хранятся строки данных, а не один единственный столбец. 4 байта тут, 4 байта там, 2 байта еще где-то. и вот уже на одной строке экономится прилично..

Влияет и на скорость выборки (сравнение то идет по всей длине), и на размер БД на жестком диске и на размер таблицы в памяти, и на ее кеширование.

Давайте простой пример приведу: eсли взять 32битный процессор, у него за один такт проходит 32 бита. 32 / 8 = 4 байта.
Взять например значение и прибавить к нему единичку - один такт ассемблера на саму инструкцию инкремента, еще один такт ассемблера на значение. Итого два такта. А для 8байтного значения, уйдет три такта, то есть скорость выполнения этой операции на 33% дольше. Этот пример на самом деле не совсем так работает, но он показателен в том смысле, что не стоит швыряться байтами налево-направо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы