Tengo una tabla de registro que contendrá millones de escrituras por razones estadísticas. Todas las columnas son claves extranjeras int. También voy a agregar una columna de marca de tiempo para cada fila. Dado que DATETIME toma 8bits, usaré int(10) unsigned
para reducir el espacio de almacenamiento (y el índice en esa columna) a la mitad.¿Cómo se deben almacenar las marcas de tiempo de unix en columnas int?
Sin embargo, me pregunto cuándo esta columna ya no funcionará. A las 3:14:07 AM del 19 de enero de 2038, el valor de 9.999.999.999 será un problema para las marcas de tiempo de UNIX, pero una int sin firmar en MySQL solo tiene una capacidad de 4.294.967.295 y la marca de tiempo 4294967295 muestra un número no válido en mi aplicación PHP.
¿Qué significa esto? ¿El final del almacenamiento de marcas de tiempo int en MySQL va a ser en algún momento en 2021 ya que no puede llegar al 9999999999?
Respuesta:
- 2147483647 es 2038 (no 9999999999) así que no hay problema.
unsigned
no es necesario ya que 2147483647 se ajusta bien en un int firmado de MySQL.
Me preocuparé por eso entonces. ;) – Stephen
Incluso si tuviera 10 millones de filas, usaría 9.5 MB adicionales ... Solo use el tipo DATETIME, realmente. –
Debe tener en cuenta que el objetivo del tipo DateTime es protegerlo de tener que tratar este problema en absoluto. – Nick