Web 2.0 Tips

Icon

Consejos y trucos para el desarrollo y diseño de webs

Usando tipo “serial” como id

Bueno este es un pequeño tip para los que trabajan con MySQL. Yo era uno de los que para campo “id” de una tabla utilizaba “integer unsigned not null auto_increment primary key”, hasta que un día una gran base de datos estallo porque había llegado al limite del campo “4.294.967.295″ para el (integer unsigned), realmente es un número muy grandes, que suponemos nunca pasar, tengo sitios de hace años que siguen andando bien, el tema es que este sitio hacia muchas transacciones por día y cada una generaba bastantes campos en esta tabla, aunque los datos se hiban insertando / eliminando y el promedio de la tabla era de unos 6 millones de regitros, estos hiban rotando.

En fin cuando tuve que reparar esto me puse a ver cual tipo de valor le seguía y llegué al “BIGINT” que tiene (unsigned) hasta: 18.446.744.073.709.551.615, aunque es un número exagerado, internamente son 8 Bytes, o 64 bits, cosa que hoy por hoy no es tan pesado.

El tema es que cuando me puse a leer, descubri el tipo de dato Serial, desde MySQL 5.0, que no es un tipo de dato sino un alias a “BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT UNIQUE”. Esto nos deja un código mas limpio a la hora de crear una tabla y nos evita equivocarnos:


CREATE TABLE Ejemplo (
ej_id Serial,
ej_nombre varchar(100)
);

Algo que tambien me paso, es que los enteros de PHP tambien tienen como limite los 32 bits, asi que tuve que parchear un poco, pero eso lo extiendo en otro post.


Tips relacionados:

  1. Usando Full-Text en MySQL, para búsquedas super rápidas
  2. Automatizando el modelo con triggers en MySQL
  3. Como hacer plugins para jQuery
  4. Como centrar un Div con JQuery
  5. Usando el método stop() en jQuery

Tip de MySQL

Tags: , ,

3 Responses

  1. El Barto says:

    Está bueno el tip. No conocía el Serial. Igual está bueno no abusar, y usarlo solo en tablas que sabés que existe alguna posibilidad de que los IDs lleguen a ser tan altos, porque el BIGINT ocupa el doble de espacio que el INT.

  2. Exos
    Twitter: exos
    says:

    Seguro, tampoco lo vamos a usar en tablas de poco uso, pero tablas de logs, y demás, es común alcanzar grandes ids, talvez después de años, pero por lo menos ya dejamos el sistema preparado

  3. villa gesell says:

    magnifico articulo, nuevo para mi el Serial, a probarlo.
    gracias

Leave a Reply

Exos

Oscar J. Gentilezza Arenas (Exos) Programador y curioso en lo relacionado en la informatica, actualmente trabaja de programador web usando PHP y manteniendo servidores en GNU/Linux y FreeBSD

Web: http://blog.exodica.com.ar

Tips: 42

Recomendamos

Haste autor!

En web2.0-tips, cualquiera puede publicar un consejo, truco o articulo relacionado con el desarrollo y diseño web. Tu puedes registrarte y postear, aparte te quedas con el 80% de impresiones de adsense en tus publicaciones.

Lee mas aca!

Categoria

Haste fan

Web Analytics