У меня есть таблица протоколирования, которая будет содержать миллионы записей по статистическим соображениям. Все столбцы являются внутренними ключами. Я также собираюсь добавить столбец timestamp для каждой строки. Учитывая, что DATETIME принимает 8 бит - я буду использовать int(10) unsigned
, чтобы сократить пространство для хранения (и индекс в этом столбце) пополам.
Однако мне интересно, когда этот столбец больше не будет работать. В 3:14:07 утра 19 января 2038 года значение 9,999,999,999 будет проблемой для временных меток UNIX - но unsigned int в MySQL поддерживает только до 4 294 967 295, а временная метка 4294967295 показывает недопустимое число в моем приложении PHP.
Итак, что это значит? Является ли конец хранения int timestamps в MySQL, когда-нибудь в 2021 году, так как он не может сделать все до 9999999999?
Ответ:
- 2147483647 - 2038 (не 9999999999), поэтому проблем нет.
-
unsigned
не требуется, так как 2147483647 отлично подходит для подписанного MySQL int.