Smart Scan est une fonction de La plate-forme Exadata d'Oracle qui permet de décharger certains types d'opérations du serveur de base de données vers les serveurs de stockage Exadata, ce qui améliore considérablement les performances en réduisant la quantité de données à transférer entre le stockage et le serveur de base de données.
Table des matières
Les principaux aspects de Smart Scan sont les suivants
- Filtrage des prédicats: Au lieu de transférer des blocs de données entiers du stockage à la base de données, Smart Scan permet aux serveurs de stockage Exadata d'appliquer directement des opérations de filtrage. Cela signifie que seules les lignes de données pertinentes sont renvoyées, ce qui réduit le transfert de données et améliore les performances.
- Projection de la colonne: Seules les colonnes nécessaires d'une table, en fonction de la requête, sont renvoyées depuis le stockage, ce qui réduit encore la quantité de données transférées.
- Décompression: Pour les données stockées au format HCC (Hybrid Columnar Compression) d'Oracle, Smart Scan permet aux serveurs de stockage de ne décompresser que les colonnes et les lignes qui les intéressent, plutôt que de décompresser des blocs de données entiers, ce qui rend le processus de récupération des données plus rapide et plus efficace.
- Lectures directes: Smart Scan s'appuie sur le mécanisme de lecture directe d'Oracle, qui contourne le cache de la base de données et lit les données directement dans le Program Global Area (PGA) du processus, éliminant ainsi les frais généraux liés à la gestion du cache.
- Exigences en matière de scanners complets: L'analyse intelligente n'est déclenchée que lors de l'analyse complète d'une table ou de l'analyse rapide d'un index complet. Les requêtes qui accèdent aux données par le biais de balayages de plages d'index ou d'autres méthodes n'invoqueront pas Smart Scan.
- Exigences en matière de stockage Exadata: Les analyses intelligentes ne sont possibles que pour les données stockées sur le système de stockage Exadata, car elles dépendent du logiciel de stockage spécialisé d'Exadata.
En réduisant la quantité de données transférées et le travail effectué par les serveurs de base de données, Smart Scan accélère considérablement les opérations à forte intensité de données, en particulier les charges de travail analytiques qui impliquent de grands balayages de tables.
Cependant, certaines conditions peuvent désactiver Smart Scan, comme l'utilisation de certains types de données (par exemple, LOB), de fonctions telles que Flashback Query, ou lors de l'interrogation de données provenant d'un stockage non Exadata.
Pour une vérification plus détaillée de l'existence d'une analyse intelligente, des méthodes de traçage et des outils de surveillance sont souvent utilisés pour analyser les mesures de performance et les plans d'exécution.
1. Comment utiliser Exadata Smart Scan
Pour utiliser Smart Scan dans Oracle Exadata, certaines conditions préalables et configurations doivent être respectées.
Smart Scan est automatiquement invoqué par Oracle Exadata lorsque des types spécifiques de requêtes et de conditions sont satisfaits, généralement lors de balayages complets de tables.
Voici comment vous pouvez vous assurer que Smart Scan est utilisé efficacement :
1.1 Assurer des balayages complets de la table ou des balayages complets rapides de l'index
Le Smart Scan est déclenché principalement pendant :
- Analyse complète de la table : Lorsqu'Oracle lit l'intégralité de la table.
- Analyses rapides de l'index complet : Lorsqu'Oracle récupère des données d'index en masse.
Comment déclencher:
- Utilisez des requêtes qui effectuent des balayages complets (par ex,
SELECT *
sans clause WHERE indexée). - Évitez les recherches ligne par ligne ou les requêtes qui s'appuient fortement sur des mécanismes d'indexation tels que les balayages de plage d'index.
Exemple :
SELECT * FROM large_table WHERE column > 100;
1.2 Utiliser la lecture directe des chemins d'accès
Smart Scan s'appuie sur des lectures directes, qui contournent le cache de la base de données et lisent les données directement dans le PGA. Les lectures directes sont généralement utilisées lors des balayages complets de tables ou de l'exécution de requêtes en parallèle.
Comment déclencher:
- Utilisation
PARALLÈLE
l'indice ou la configuration du parallélisme pour assurer des lectures directes.
Par exemple :
SELECT /*+ PARALLEL(large_table, 8) */ * FROM large_table WHERE column > 100;
1.3 Stockage des données sur Exadata Storage
Smart Scan ne fonctionne qu'avec des données stockées sur des cellules de stockage Exadata.
Assurez-vous que les données auxquelles vous accédez se trouvent sur Exadata, car les données stockées sur un stockage non Exadata (comme NFS, SAN) ne bénéficieront pas de Smart Scan.
Comment s'assurer:
- Utilisation Gestion automatique du stockage (ASM) sur Exadata pour le stockage de votre base de données.
1.4 Utiliser de grands tableaux ou de grands ensembles de données
Smart Scan est conçu pour optimiser les performances des grands ensembles de données.
Elle n'apportera pas d'avantages notables pour les petites tables ou les requêtes qui récupèrent un petit nombre de lignes.
Comment s'assurer:
- Cibler les grandes tables pour l'utilisation de Smart Scan, telles que celles utilisées dans les environnements d'entreposage de données.
1.5 Garantir l'utilisation des fonctionnalités prises en charge
Smart Scan est disponible pour une variété d'opérations telles que :
- Filtrage des prédicats: Assure que seules les lignes répondant à la clause WHERE sont renvoyées.
- Projection de la colonne: Seules les colonnes requises sont renvoyées au serveur de base de données.
Exemple :
SELECT column1, column2 FROM large_table WHERE column3 > 100;
1.6. Éviter les fonctions qui désactivent Smart Scan
Certaines fonctionnalités d'Oracle peuvent empêcher l'invocation de Smart Scan.
Évitez les situations suivantes lorsque vous essayez d'utiliser Smart Scan :
- Balayages de la gamme d'indices
- Verrouillage des rangs
- Requête Flashback
- L'utilisation de types de données non pris en charge comme
LOBs
1.7 Contrôle et vérification de l'utilisation de Smart Scan
Vous pouvez vérifier si Smart Scan a été utilisé en contrôlant les statistiques de session ou les plans d'exécution. Utilisez des outils Oracle tels que :
- Surveillance SQL (
DBMS_SQLTUNE.REPORT_SQL_MONITOR
) - Recherchez des statistiques telles que
cell smart table scan
oubalayage de l'index intelligent de la cellule
.
Exemple :
SELECT * FROM v$session_event WHERE event LIKE 'cell%';
2. Faut-il utiliser des index avec Exadata ?
L'utilisation de index dans Oracle Exadata dépend de la charge de travail et des modèles de requête.
Alors que le système Exadata Smart Scan et capacités de déchargement peut réduire considérablement la dépendance à l'égard des index pour certains types de charges de travail, les index restent tout à fait pertinents pour d'autres.
Voici un aperçu détaillé de quand et pourquoi vous pouvez encore avoir besoin d'index dans Exadata :
2.1 Quand les index sont moins importants dans Exadata
Exadata est conçu pour exceller dans l'analyse efficace de grands ensembles de données, réduisant ou éliminant souvent le besoin d'index dans des scénarios tels que :
- Entreposage de données et analyse:
- Les requêtes qui impliquent des balayages complets de tables ou qui traitent de gros volumes de données bénéficient de Smart Scan.
- Le filtrage des prédicats et la projection des colonnes réduisent la quantité de données renvoyées, ce qui accélère les analyses.
- Compression colonnaire hybride (HCC):
- Le système Exadata Compression colonnaire hybride peut rendre les analyses de tables complètes plus efficaces en réduisant de manière significative la taille des données.
- OLAP (Online Analytical Processing):
- Les requêtes analytiques qui résument ou agrègent des données sur des tables volumineuses reposent souvent sur des analyses complètes, pour lesquelles Smart Scan offre des performances optimales.
- Exécution parallèle des requêtes:
- Exadata prend en charge des niveaux élevés de parallélisme, ce qui lui permet de traiter efficacement les scans de grande taille.
Dans ces cas, le délestage de stockage d'Exadata peut remplacer le besoin de certains index.
2.2 Quand les indices sont encore indispensables
Bien qu'Exadata réduise la dépendance à l'égard des index, il existe encore des scénarios dans lesquels ils sont très utiles :
- OLTP (Online Transaction Processing):
- Les charges de travail OLTP impliquent souvent de petites requêtes sélectives (par exemple, l'extraction d'une seule ligne ou d'une petite série de lignes). Les index sont essentiels pour les performances dans de tels cas, car ils évitent les balayages complets en pointant directement vers les lignes pertinentes.
Exemple :SELECT nom_du_client FROM clients WHERE customer_id = 101 ;
- Requêtes très sélectives:
- Si une requête ne renvoie que quelques lignes d'un grand ensemble de données, un index peut être plus performant qu'un balayage complet de la table, même avec Smart Scan.
- Opérations DML fréquentes:
- Les index peuvent améliorer les performances des requêtes sur les tables fréquemment mises à jour, en particulier lorsque les requêtes ciblent des lignes spécifiques sur la base de clés uniques ou primaires.
- Rejoindre les opérations:
- Les index sur les colonnes de jointure peuvent améliorer de manière significative les performances de jointure dans les systèmes OLTP.
- Contraintes uniques:
- Les index sont toujours nécessaires pour imposer des contraintes uniques ou des clés primaires.
- Requêtes non prises en charge par Smart Scan:
- Smart Scan ne fonctionne pas avec :
- Balayage des plages d'index
- Petites tables qui ne déclenchent pas de balayage complet
- Certains types de données comme
LOBs
- Fonctionnalités telles que Flashback Query ou le stockage en bloc
- Smart Scan ne fonctionne pas avec :
2.3 Meilleures pratiques Exadata : Équilibrer l'utilisation des index
Pour optimiser les performances d'Exadata, équilibrez l'utilisation des index et de Smart Scan en suivant les recommandations suivantes :
- Se concentrer sur les questions essentielles:
- Analysez la charge de travail pour identifier les requêtes qui nécessitent un accès rapide et ponctuel aux données. Utilisez des index pour ces requêtes.
- Utiliser les index de stockage:
- Exadata crée automatiquement index de stockage au niveau du stockage, ce qui permet d'éliminer les entrées/sorties inutiles pour les analyses volumineuses. Ces opérations ne nécessitent pas d'intervention manuelle.
- Limiter la surindexation:
- Évitez de créer un trop grand nombre d'index, en particulier sur les grandes tables utilisées pour l'analyse, car leur maintenance pendant les opérations DML peut s'avérer coûteuse.
- Test et suivi:
- Utilisation Plans d'exécution SQL et des outils tels que Surveillance SQL pour évaluer si les indices contribuent ou nuisent à la performance.
Exemple
EXPLAIN PLAN FOR SELECT * FROM orders WHERE order_date > SYSDATE - 30; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY());
2.4 Principaux enseignements
- Pour analyse et rapports à grande échelleLe Smart Scan d'Exadata peut réduire le besoin d'index traditionnels.
- Pour OLTP ou requêtes sélectivesLes indices restent essentiels.
- La stratégie optimale consiste à utiliser les index de manière judicieuse, en se concentrant sur les schémas d'interrogation et les besoins de performance.
Les index et Smart Scan sont complémentaires, et il est essentiel de comprendre votre charge de travail pour décider quand utiliser l'un ou l'autre.
3. Liste de contrôle sommaire pour Smart Scan
- Utilisez des balayages complets de la table ou des balayages complets rapides de l'index.
- Stocker les données sur le système de stockage Exadata.
- Veillez à ce que la requête utilise des lectures directes.
- Utiliser des tableaux et des ensembles de données de grande taille.
- Évitez les fonctions qui désactivent Smart Scan (par exemple, Flashback, LOBs).
- Vérifier à l'aide de statistiques de performance et d'outils de surveillance.
En suivant ces étapes, vous pouvez maximiser vos chances d'utiliser Smart Scan pour améliorer les performances de vos requêtes dans Exadata.