vendredi 2 octobre 2015

EXADATA Offloading/SmartScan


Dans cet article nous allons parler de la notion "Exadata offloading ou SmartScan". Offloading peut éventuellement être traduit par déporter ou déléguer un travail.

La notion du offloading est la recette miracle permettant de faire la différence entre Exadata et toute autre plateforme utilisée pour faire tourner des bases de données Oracle. On parle de offloading pour décrire l'action qui consiste à déplacer les traitements en principe réalisés par le serveur de base de données vers la couche stockage (cellule). L'objectif n'est pas uniquement un transfert de charge des serveurs bases de données aux serveurs de stockage pour reduire la consommation de CPU. L'objectif principal est la réduction de la quantité des données retournées aux serveurs de base de données. Il est à noter que l'importante quantité de données retournées aux serveurs de base de données par la couche stockage représente un des principaux goulot d'étranglement des bases de données.

On parle d'Offloading ou de SmartScan. Cependant le SmartScan fait plus référence aux améliorations apportées par Exadata aux traitements SQL. Le terme Offloading est lui plus générique et fait référence en plus à d'autres aspects par exemple l'impact sur la sauvegarde et restauration.

Pour illustrer l'importance de l'Exadata Offloading on prend un exemple on ne peut plus simple:
Une requête SQL qui récupère un champ dans une ligne dans une table et pour couronner le tout, elle filtre sur le Rowid de la ligne. Dans une architecture non Exadata un minimum d'un bloc devra être chargé en mémoire.
En supposant que la table enregistre en moyenne 50 lignes par bloc. Cela implique que nous allons transférer 49 lignes inutilement au serveur de base de données. Vous pouvez alors imaginer le cas des énormes quantités de données inutiles transmises aux serveurs de base de données et du temps nécessaire pour les transmettre. Exadata à été conçu principalement pour résoudre cette problématique via le Offloading qui a pour principal objectif de réduire la quantité de données retournée par la couche stockage aux serveurs de base de données.

Exadata implemente dans sa couche software des algorithmes permettant de tirer le meilleur profit de la couche hardware. Pour tester l'impact du Offloading je vais modifier le paramètre cell_offload_processing et ensuite interroger une table TAB d'une taille de 385 millions de lignes :

SYS@SU14> alter session set cell_offload_processing=false;
Session altered.
Elapsed: 00:00:00.06

SYS@SU14> select count(*) from TAB where col1 < 0;

COUNT(*)
----------
2 1 row selected.

Elapsed: 00:00:51.09

Je modifie de nouveau le paramètre cell_offload_processing pour activer le Offloading  :

SYS@SU14> alter session set cell_offload_processing=true;

Session altered.

Elapsed: 00:00:00.07

SYS@SU14> select count(*) from TAB where col1 < 0;

COUNT(*)
----------
2 1 row selected.

Elapsed: 00:00:00.15

On peut voir l'amélioration du temps d'exécution de la requête.

Je parlerai prochainement des mécanismes qui sont derrière le SmartScan.


Aucun commentaire:

Enregistrer un commentaire