Ver Mensaje Individual
  #7 (permalink)  
Antiguo 03/06/2011, 12:04
leif_sk8er
 
Fecha de Ingreso: junio-2009
Mensajes: 309
Antigüedad: 15 años, 5 meses
Puntos: 5
Respuesta: IPV6 y IPV4 en campo INT

He hecho la prueba, y mejora la solucion del decimal. He creado una tabla identica a la del primer mensaje del hilo, pero el campo IP que sea bigint, y he puesto otro llamado IP2 con big int.

Entonces he ejecutado este script:
Código PHP:
Ver original
  1. $fecha = time();
  2. $ip = '11111110101111001010010101110100001110000010101100100011110000011010101001001001010001011001001001001110111111101001100110000010';
  3. $parte1 = substr($ip, 0, 63);
  4. $parte2 = substr($ip, 64, 128);
  5.  
  6.  
  7. $n = 0;
  8. while($n < 200000){
  9. mysql_query("INSERT INTO acceso VALUES ('$id', '$fecha', 0, $fecha, '".bindec($parte1)."', '".bindec($parte2)."')");
  10. $n++;
  11. }


Esto ha insertado 200mil registros, ocupando 8.3 MB (que ha 50 millones son 1.9 GB)


Conclusion a 50 millones de registros:

Usando un campo varchar de 128 y guardando la ip en binario: 4.9 GB
Usando un campo decimal (39,0) y guardando la ip en decimal: 2.6 GB
Usando 2 campos BIGINT, convirtiendo la ip a binario, partiendo en 64 caracteres, y pasandolo a entero guardando cada parte en cada columna: 1.9 GB


Resultado: Mejor solucion los BIGINT de las propuestas! No se si estareis de acuerdo, pero almenos esa a sido mi conclusion tras el testeo.