que tienen una estructura de datos que tiene este aspecto:¿Cómo importar * enormes * fragmentos de datos a PostgreSQL?
Model Place
primary key "id"
foreign key "parent" -> Place
foreign key "neighbor" -> Place (symmetryc)
foreign key "belongtos" -> Place (asymmetric)
a bunch of scalar fields ...
Tengo más de 5 millones de filas de la tabla modelo, y tengo que insertar ~ 50 millones de filas en cada una de las dos tablas de claves foráneas. Tengo SQL
archivos que se ven así:
INSERT INTO place_belongtos (from_place_id, to_place_id) VALUES (123, 456);
y que están a punto 7 Gb cada uno. El problema es que cuando hago psql < belongtos.sql
, me toma aproximadamente 12 horas para importar ~ 4 millones filas en mi CPU AMD Turion64x2. OS es Gentoo ~ amd64, PostgreSQL es la versión 8.4, compilada localmente. El directorio de datos es un montaje de enlace, ubicado en mi segunda partición extendida (ext4
), que creo que no es el cuello de botella.
Sospecho que lleva mucho tiempo insertar las relaciones de clave foránea porque psql
comprueba las restricciones de clave para cada fila, lo que probablemente agrega cierta sobrecarga innecesaria, ya que estoy seguro de que los datos son válidos. ¿Hay alguna manera de acelerar la importación, es decir, deshabilitar temporalmente la verificación de restricciones?
sí, pero creo que solo en 8.4+ hmm tiene que buscarlo ... – xenoterracide