
Exploiter le Schéma d’Information de Redshift pour Améliorer les Performances de la Base de Données

Introduction
Cet article explore le schéma de base de données Redshift, en se concentrant spécifiquement sur la mise en œuvre de son schéma d’information. Nous examinerons comment il se compare à des outils similaires dans d’autres systèmes de base de données, tels que Microsoft SQL Server et PostgreSQL. À la fin de ce guide, vous aurez une compréhension solide de la façon de tirer parti des tables système de Redshift pour optimiser vos stratégies de gestion des données.
Qu’est-ce qu’un Schéma d’Information dans MS SQL Server ?
Avant de plonger dans les spécificités de Redshift, commençons par un point de référence familier : le Schéma d’Information de Microsoft SQL Server.
Comprendre les Bases
Dans MS SQL Server, le Schéma d’Information est un ensemble de vues qui fournissent des métadonnées sur les objets d’une base de données. C’est une manière standardisée d’accéder aux informations sur les tables, les colonnes, les vues et d’autres objets de la base de données.
Par exemple, pour afficher toutes les tables d’une base de données en utilisant le Schéma d’Information de MS SQL Server, vous pourriez utiliser une requête comme celle-ci :
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
Cette requête renverrait une liste de toutes les tables de base dans la base de données actuelle.
Schéma de la Base de Données Redshift : Outils d’Information
Maintenant, tournons notre attention vers Redshift, un entrepôt de données de niveau pétaoctet d’Amazon Web Services. Bien que Redshift soit basé sur PostgreSQL, il dispose de ses propres tables et vues système qui remplissent un rôle similaire à celui du Schéma d’Information dans d’autres systèmes de base de données.
Tables Système dans Redshift
Redshift fournit un ensemble de tables système qui stockent des métadonnées sur les données du cloud, ses tables et autres objets. Ces tables système sont préfixées par “PG_”, “STL_”, “STV_”, ou “SVV_”.

Voici quelques-unes des principales tables système dans Redshift :
- PG_TABLE_DEF : Contient des informations sur les définitions de tables.
- SVV_COLUMNS : Fournit une vue de toutes les colonnes de la base de données.
- SVV_TABLES : Offre une vue de toutes les tables de la base de données.
Voyons un exemple de l’utilisation de ces tables :
SELECT tablename, "column", type, encoding FROM pg_table_def WHERE schemaname = 'public';
Cette requête renverra des informations sur toutes les colonnes des tables dans le schéma ‘public’, y compris leurs noms, types de données et encodages.
Requêtes sur le Schéma de la Base de Données Redshift
Pour obtenir une vue complète du schéma de votre base de données Redshift, vous pouvez utiliser des requêtes qui combinent des informations provenant de plusieurs tables système. En voici un exemple :
SELECT n.nspname AS schema_name, c.relname AS table_name, a.attname AS column_name, t.typname AS data_type FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid JOIN pg_catalog.pg_type t ON t.oid = a.atttypid WHERE c.relkind = 'r' -- Only regular tables AND n.nspname NOT IN ('pg_catalog', 'information_schema') AND a.attnum > 0 -- Exclude system columns ORDER BY schema_name, table_name, a.attnum;
Cette requête fournit une vue détaillée du schéma de votre base de données Redshift, y compris les noms de schéma, les noms de table, les noms de colonne et les types de données.
Comparer les Outils d’Information de Redshift et PostgreSQL
Étant donné que Redshift est basé sur PostgreSQL, il est naturel de se demander sur les similitudes et les différences de leurs outils de schéma d’information.
Schéma d’Information de PostgreSQL
PostgreSQL, comme MS SQL Server, dispose d’un INFORMATION_SCHEMA conforme à la norme SQL. Il fournit des vues offrant des informations sur tous les objets de la base de données.
Par exemple, pour lister toutes les tables dans PostgreSQL, vous pouvez utiliser :
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
Redshift vs PostgreSQL
Bien que Redshift soit basé sur PostgreSQL, il n’inclut pas le schéma d’information standard INFORMATION_SCHEMA. À la place, il fournit ses propres tables et vues système. Cela est dû à la nature spécialisée de Redshift en tant qu’entrepôt de données colonnaire, qui nécessite des outils d’optimisation et de gestion différents.
Cependant, de nombreux concepts sont similaires. Par exemple, là où PostgreSQL dispose de information_schema.tables, Redshift a SVV_TABLES. Les deux fournissent des métadonnées sur les tables de la base de données, mais les spécificités des informations disponibles et de la manière dont elles sont accessibles peuvent différer.
Exploiter les Tables Système de Redshift pour l’Optimisation des Performances
Comprendre les tables système de Redshift peut vous aider à optimiser les performances de votre base de données. Explorons quelques applications pratiques.
Identifier la Répartition Inégale des Tables
La répartition inégale des tables se produit lorsque les données sont réparties de manière inégale entre les slices dans Redshift. Cela peut entraîner des problèmes de performance. Vous pouvez utiliser les tables système pour identifier cette répartition inégale :
SELECT trim(name) AS table, slice, count(*) AS num_values, cast(100 * ratio_to_report(count(*)) over () AS decimal(5,2)) AS pct_of_total FROM svv_diskusage WHERE name IN ('your_table_name') GROUP BY name, slice ORDER BY name, slice;
Cette requête montre la distribution des données entre les slices pour une table spécifique, vous aidant à identifier les problèmes potentiels de répartition inégale.
Surveiller les Performances des Requêtes
Les tables STL_QUERY et SVL_QUERY_SUMMARY de Redshift peuvent vous aider à surveiller les performances des requêtes :
SELECT q.query, q.starttime, q.endtime, q.elapsed/1000000 AS elapsed_seconds, s.segment, s.step, s.maxtime/1000000 AS step_seconds, s.rows, s.bytes FROM stl_query q JOIN svl_query_summary s ON q.query = s.query WHERE q.starttime >= DATEADD(hour, -1, GETDATE()) ORDER BY q.query, s.segment, s.step;
Cette requête fournit des informations détaillées sur les requêtes exécutées dans la dernière heure, y compris leur temps d’exécution et l’utilisation des ressources.
Meilleures Pratiques pour Utiliser le Schéma d’Information de Redshift
Pour tirer le meilleur parti des tables et vues système de Redshift, prenez en compte les meilleures pratiques suivantes :
- Surveillez régulièrement les statistiques des tables en utilisant SVV_TABLE_INFO pour vous assurer que vos tables sont optimisées.
- Utilisez STL_ALERT_EVENT_LOG pour identifier et résoudre de manière proactive les problèmes de performance.
- Exploitez SVV_VACUUM_PROGRESS pour surveiller et gérer les opérations de VACUUM.
- Utilisez SVV_DATASHARE_OBJECTS pour gérer le partage de données entre les clusters Redshift.
Souvenez-vous, bien que ces tables système fournissent des informations précieuses, les interroger fréquemment peut affecter les performances. Utilisez-les avec discernement et envisagez de mettre en cache les résultats lorsque cela est approprié.
Conclusion
Comprendre et utiliser efficacement les outils de schéma d’information de Redshift est crucial pour gérer et optimiser votre entrepôt de données. Bien qu’il soit différent du schéma standard INFORMATION_SCHEMA que l’on trouve dans SQL Server et PostgreSQL, les tables et vues système de Redshift offrent des capacités puissantes pour surveiller, dépanner et optimiser votre base de données.
En tirant parti de ces outils, vous pouvez obtenir des informations approfondies sur le schéma de votre base de données Redshift, surveiller les performances et prendre des décisions éclairées sur la gestion des données et l’optimisation des requêtes. Comme pour tout outil puissant, utilisez ces capacités avec sagesse pour équilibrer la collecte d’informations et les performances globales du système.
Pour ceux qui recherchent des outils avancés de sécurité et de conformité des bases de données, envisagez d’explorer DataSunrise. Nos solutions conviviales et flexibles offrent une protection complète des bases de données. Visitez notre site Web pour une démonstration en ligne et découvrez comment améliorer la sécurité de votre base de données dès aujourd’hui.