Aquí está la pregunta ...
Considerando 192 trillones de registros, ¿cuáles deberían ser mis consideraciones?
Mi principal preocupación es la velocidad.
Aquí está la mesa ...
CREATE TABLE `ref` (
`id` INTEGER(13) AUTO_INCREMENT DEFAULT NOT NULL,
`rel_id` INTEGER(13) NOT NULL,
`p1` INTEGER(13) NOT NULL,
`p2` INTEGER(13) DEFAULT NULL,
`p3` INTEGER(13) DEFAULT NULL,
`s` INTEGER(13) NOT NULL,
`p4` INTEGER(13) DEFAULT NULL,
`p5` INTEGER(13) DEFAULT NULL,
`p6` INTEGER(13) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY (`s`),
KEY (`rel_id`),
KEY (`p3`),
KEY (`p4`)
);
Aquí están las consultas ...
SELECT id, s FROM ref WHERE red_id="$rel_id" AND p3="$p3" AND p4="$p4"
SELECT rel_id, p1, p2, p3, p4, p5, p6 FROM ref WHERE id="$id"
INSERT INTO rel (rel_id, p1, p2, p3, s, p4, p5, p6)
VALUES ("$rel_id", "$p1", "$p2", "$p3", "$s", "$p4", "$p5", "$p6")
Aquí hay algunas notas ...
- Los SELECT se realizarán con mucha más frecuencia que el INSERT. Sin embargo, ocasionalmente quiero agregar algunos cientos de registros a la vez.
- En cuanto a la carga, no habrá nada durante horas, entonces tal vez algunos miles de consultas a la vez.
- No creo que pueda normalizar más (necesito los valores de p en una combinación)
- La base de datos en su conjunto es muy relacional.
- Esta será la mesa más grande con diferencia (la siguiente más grande es de aproximadamente 900k)
ACTUALIZACIÓN (08/11/2010)
Curiosamente, me dieron una segunda opción ...
En lugar de 192 billones, podría almacenar 2.6 * 10 ^ 16 (15 ceros, lo que significa 26 billones) ...
Pero en esta segunda opción solo necesitaría almacenar un bigint (18) como índice en una tabla. Eso es todo, solo una columna. Así que solo estaría comprobando la existencia de un valor. Ocasionalmente agrega registros, nunca los elimina.
Eso me hace pensar que debe haber una solución mejor que mysql para simplemente almacenar números ...
Dada esta segunda opción, ¿debería tomarla o seguir con la primera ...
[editar] Acabo de recibir noticias de algunas pruebas que se han realizado: 100 millones de filas con esta configuración devuelven la consulta en 0.0004 segundos [/ editar]