4 votes

INSERT INTO table SELECT Redshift super lent

Nous avons une grande table, sur laquelle nous devons faire une COPIE PROFONDE. Comme nous n'avons pas assez d'espace disque vide pour le faire en une seule fois, j'ai essayé de le faire par lots. Mais les lots semblent s'exécuter très lentement.

Je fonctionne de la manière suivante :

   INSERT INTO new_table 
   SELECT * FROM old_table 
    WHERE creation_date between '2018-01-01' AND '2018-02-01'

Même si la requête renvoie un petit nombre de lignes ~ 1K

SELECT * FROM old_table 
WHERE creation_date between '2018-01-01' AND '2018-02-01'
  • En INSERT Les requêtes durent environ 50 minutes.

  • En old_table a ~286M lignes et ~400 colonnes

  • creation_date est l'une des SORTKEY s

Expliquer le plan ressemble à :

XN Seq Scan on old_table  (cost=0.00..4543811.52 rows=178152 width=136883)
      Filter: ((creation_date <= '2018-02-01'::date) AND (creation_date >= '2018 01-01'::date))

Ma question est la suivante :

  • Quelle peut être la raison de INSERT query pour prendre autant de temps ?

3voto

Red Boy Points 1894

À mon avis, les deux possibilités suivantes sont envisageables - mais si vous pouviez ajouter plus de détails à votre question, ce serait formidable.

  1. Comme @John l'a indiqué dans les commentaires, votre SORTKEY est très important dans RedShift. creation_date Sortkey ?
  2. Avez-vous fait de nombreuses mises à jour de votre old_table Si c'est le cas, vous devez d'abord passer l'aspirateur. VACUUM DELETE Only old_table ensuite, faire des requêtes sélectionnées.

Autre option, vous êtes peut-être dans la voie S3, mais vous n'êtes pas sûr de vouloir le faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X