Choix de réindexation - Amazon Redshift

Choix de réindexation

Vous pouvez souvent améliorer de façon significative les performances des requêtes en utilisant un style de tri entrelacé, mais au fil du temps les performances peuvent se dégrader si la distribution des valeurs des colonnes de clé de tri change.

Lorsque vous chargez initialement une table entrelacée vide à l'aide de COPY ou CREATE TABLE AS, Amazon Redshift crée automatiquement l'index entrelacé. Si vous chargez initialement une table entrelacée à l'aide d'INSERT, vous devez exécuter VACUUM REINDEX après pour initialiser l'index entrelacé.

Au fil du temps, à mesure que vous ajoutez des lignes avec de nouvelles valeurs de clé de tri, les performances peuvent se dégrader si la distribution des valeurs dans les colonnes de clés change. Si vos nouvelles lignes se trouvent principalement dans la plage de valeurs des clés de tri existantes, vous n'avez pas besoin de réindexer. Exécutez VACUUM SORT ONLY ou VACUUM FULL pour rétablir l'ordre de tri.

Le moteur de requête est en mesure d'utiliser l'ordre de tri pour sélectionner efficacement les blocs de données qui doivent être analysés pour traiter une requête. Pour un tri entrelacé, Amazon Redshift analyse les valeurs des colonnes de clé de tri pour déterminer l'ordre de tri optimal. Si la distribution des valeurs de clés, change, ou se déforme, au fur et à mesure que les lignes sont ajoutées, la stratégie de tri n'est plus optimale et l'avantage des performances de tri se dégrade. Pour réanalyser la distribution des clés de tri, vous pouvez exécuter une opération VACUUM REINDEX. Comme l'opération de réindexation prend du temps, pour décider si une table peut bénéficier d'une réindexation, interrogez la vue SVV_INTERLEAVED_COLUMNS .

Par exemple, la requête suivante affiche les détails des tables qui utilisent les clés de tri entrelacé.

select tbl as tbl_id, stv_tbl_perm.name as table_name, col, interleaved_skew, last_reindex from svv_interleaved_columns, stv_tbl_perm where svv_interleaved_columns.tbl = stv_tbl_perm.id and interleaved_skew is not null; tbl_id | table_name | col | interleaved_skew | last_reindex --------+------------+-----+------------------+-------------------- 100048 | customer | 0 | 3.65 | 2015-04-22 22:05:45 100068 | lineorder | 1 | 2.65 | 2015-04-22 22:05:45 100072 | part | 0 | 1.65 | 2015-04-22 22:05:45 100077 | supplier | 1 | 1.00 | 2015-04-22 22:05:45 (4 rows)

La valeur de interleaved_skew est un rapport qui indique le degré de déformation. Une valeur égale à 1 signifie qu'il n'y a aucune déformation. Si la déformation est supérieure à 1,4, une opération VACUUM REINDEX améliore généralement les performances, sauf si la déformation est inhérente à l'ensemble jeu sous-jacent.

Vous pouvez utiliser la valeur de date dans last_reindex pour déterminer le temps qui s'est écoulé depuis la dernière réindexation.