sql >> Base de Datos >  >> RDS >> PostgreSQL

Marco de datos escribiendo en Postgresql bajo rendimiento

Respondiendo a la pregunta 1:parece que el problema tenía más que ver con Postgresql (o más bien con las bases de datos en general). Teniendo en cuenta los puntos hechos en este artículo:https://use-the- index-luke.com/sql/dml/insert Encontré lo siguiente:

1) Al eliminar todos los índices de la tabla de destino, la consulta se ejecutó en 9 segundos. Reconstruir los índices (en postgresql) tomó otros 12 segundos, por lo que todavía está muy por debajo de los otros tiempos.

2) Con solo una clave principal en su lugar, la inserción de filas ordenadas por las columnas de la clave principal redujo el tiempo necesario a aproximadamente un tercio. Esto tiene sentido ya que debe haber poca o ninguna mezcla de las filas de índice requeridas. También verifiqué que esta es la razón por la cual mi unión cartesiana en postgresql fue más rápida en primer lugar (es decir, las filas fueron ordenadas por el índice, puramente por casualidad), colocando las mismas filas en una tabla temporal (sin ordenar) e insertando desde eso en realidad tomó mucho más tiempo.

3) Intenté experimentos similares en nuestros sistemas mysql y encontré el mismo aumento en la velocidad de inserción al eliminar índices. Sin embargo, con mysql parecía que la reconstrucción de los índices consumía el tiempo ganado.

Espero que esto ayude a cualquier otra persona que encuentre esta pregunta en una búsqueda.

Todavía me pregunto si es posible eliminar el paso escribir en csv en python (Q2 anterior), ya que creo que podría escribir algo en python que sería más rápido que postgresql puro.

Gracias Giles