PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Mauvaises performances de l'écriture de données dans Postgresql

Répondant à Q 1 moi-même :il semble que le problème ait plus à voir avec Postgresql (ou plutôt les bases de données en général). En tenant compte des points soulevés dans cet article :https://use-the- index-luke.com/sql/dml/insert J'ai trouvé ce qui suit :

1) La suppression de tous les index de la table de destination a entraîné l'exécution de la requête en 9 secondes. La reconstruction des index (en postgresql) a pris 12 secondes supplémentaires, donc toujours bien en dessous des autres fois.

2) Avec seulement une clé primaire en place, l'insertion de lignes ordonnées par les colonnes de clé primaire a réduit le temps nécessaire à environ un tiers. Cela a du sens car il devrait y avoir peu ou pas de mélange des lignes d'index requises. J'ai également vérifié que c'est la raison pour laquelle ma jointure cartésienne dans postgresql était plus rapide en premier lieu (c'est-à-dire que les lignes étaient ordonnées par l'index, purement par hasard), en plaçant les mêmes lignes dans une table temporaire (non ordonnée) et en insérant à partir de là a en fait pris beaucoup plus de temps.

3) J'ai essayé des expériences similaires sur nos systèmes mysql et j'ai trouvé la même augmentation de la vitesse d'insertion lors de la suppression des index. Avec mysql, cependant, il semblait que la reconstruction des index utilisait tout le temps gagné.

J'espère que cela aidera tous ceux qui rencontrent cette question lors d'une recherche.

Je me demande toujours s'il est possible de supprimer l'étape d'écriture en csv en python (Q2 ci-dessus) car je pense que je pourrais alors écrire quelque chose en python qui serait plus rapide que postgresql pur.

Merci Gilles