SlideShare une entreprise Scribd logo
Oracle 12c In Memory en action
Laurent Léturgez – Techsys
12 Novembre 2014
1
Oracle 12c In Memory
• Agenda
– Structure de données
– Opérations de chargement et de compression
– Algorithmes et optimisations
– Quelques résultats
– RAC, Multitenant, Exadata
– La concurrence
– Etude de ROI
09/02/2016 2
Oracle 12c In Memory
09/02/2016 3
Contexte :
- Base d’historique des ventes
- Deux schémas de 15Go environ
- Schéma 1 (TPCH_PART) : Fonctionnement classique
- Schéma 2 (TPCHIM_PART) : Fonctionnement in Memory
- Exécution de deux requêtes analytiques dans les deux schémas
Oracle 12c In Memory
• Agenda
– Structure de données
– Opérations de chargement et de compression
– Algorithmes et optimisations
– Quelques résultats
– RAC, Multitenant, Exadata
– La concurrence
– Etude de ROI
09/02/2016 4
Oracle 12c In Memory
09/02/2016 5
Volumétries
grandissantes
Besoin en
analyse de
données
Besoin de
rapidité
d’exécution
Oracle 12c In Memory
09/02/2016 6
Volumétries
grandissantes
Besoin en
analyse de
données
Besoin de
rapidité
d’exécution
Structure de
données adaptée
Oracle 12c In Memory
• Agenda
– Structure de données
– Opérations de chargement et de compression
– Algorithmes et optimisations
– Quelques résultats
– RAC, Multitenant, Exadata
– La concurrence
– Etude de ROI
09/02/2016 7
Oracle 12c In Memory
• Quoi de neuf avec Oracle 12c In Memory Column
Store ?
– Une nouvelle zone mémoire: « in Memory column store »
– Un nouveau format : les données sont organisées en
colonne dans cette zone mémoire
– Le format en ligne est conservé
09/02/2016 8
Oracle 12c In Memory
• In Memory column store : paramétrage
– Configuré en SGA par le paramètre
INMEMORY_SIZE (mini 100Mo)
– Ce n’est pas un cache mais un « magasin » … donc
pas d’algorithme de vieillissement (LRU/MRU)
09/02/2016 9
Oracle 12c In Memory
• In Memory column store : Constitution
• Pool IMCU : In Memory Compression Unit
– Contient les unités de compression (CU) : Données
formatées en colonne
• Pool SMU
– Stocke les Snapshot Metadata Unit (Equivalent des
undo pour l’IM)
09/02/2016 10
Oracle 12c In Memory
• L’IMCU structure de données centrale
– Unité d’allocation pour le stockage des données
d’une colonne
– Chaque colonne est stockée dans un espace
contigüe séparé des autres colonnes
09/02/2016 11
Oracle 12c In Memory
• L’IMCU structure de données centrale
09/02/2016 12
Marque
Karmeliet
Chimay
Chimay
Duvel
Chimay
Duvel
Westmalle
Duvel
Karmeliet
Clé Valeur
0 Chimay
1 Duvel
2 Karmeliet
3 Wesmalle
CU
Min = Chimay
Max = Westmalle
2
0
0
1
0
1
3
1
2
Dictionnaire :
Oracle 12c In Memory
• Agenda
– Structure de données
– Opérations de chargement et de compression
– Algorithmes et optimisations
– Quelques résultats
– RAC, Multitenant, Exadata
– La concurrence
– Etude de ROI
09/02/2016 13
Oracle 12c In Memory
• Provisionnement du pool In Memory
• Montée d’une table dans le pool In Memory
09/02/2016 14
SQL> ALTER SYSTEM SET INMEMORY_SIZE=10G SCOPE=SPFILE;
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
SQL> ALTER TABLE SALES INMEMORY;
SQL> ALTER TABLE SALES INMEMORY (PRODUCT_ID);
SQL> ALTER TABLE SALES NO INMEMORY;
SQL> ALTER TABLE SALES
2 > MODIFY PARTITION SALES_Q2_1998 INMEMORY;
Oracle 12c In Memory
• Priorité de montée en mémoire
– NONE < LOW < MEDIUM < HIGH < CRITICAL
– Détermine comment sont montées les colonnes en
mémoire
• NONE (Défaut) : montée lors du premier accès
• CRITICAL : montée immédiate ET au démarrage d’instance
09/02/2016 15
SQL> ALTER TABLE CUSTOMER INMEMORY PRIORITY CRITICAL;
SQL> ALTER TABLE CUSTOMER INMEMORY PRIORITY NONE;
Oracle 12c In Memory
09/02/2016 16
Volumétries
grandissantes
Besoin en
analyse de
données
Besoin de
rapidité
d’exécution
Structure de
données adaptée
Compression des
données
Oracle 12c In Memory
• Compression
– Objectif : réduire la volumétrie des données en mémoire
– Format IMCU adapté à une compression efficace
– Différents niveaux
• DML
• QUERY LOW (défaut)
• QUERY HIGH
• CAPACITY LOW
• CAPACITY HIGH
09/02/2016 17
SQL> ALTER TABLE CUSTOMER INMEMORY MEMCOMPRESS FOR QUERY HIGH;
SQL> ALTER TABLE ORDERS INMEMORY MEMCOMPRESS FOR DML;
Taux de
compression
Rapidité
d’exécution
des requêtes
Oracle 12c In Memory
09/02/2016 18
Volumétries
grandissantes
Besoin en
analyse de
données
Besoin de
rapidité
d’exécution
Structure de
données adaptée
Compression des
données
Algorithmes
adaptés
Oracle 12c In Memory
• Agenda
– Structure de données
– Opérations de chargement et de compression
– Algorithmes et optimisations
– Quelques résultats
– RAC, Multitenant, Exadata
– La concurrence
– Etude de ROI
09/02/2016 19
Oracle 12c In Memory
• Algorithmes et optimisations
–Objectifs
• Réduire les volumes traités (filtres)
• Réduire le nombre d’opérations (traitements à
plusieurs, utilisation du format adéquat)
• Limiter l’impact des volumes sur les
traitements (optimisation des jointures, des
opérations d’agrégation)
09/02/2016 20
Oracle 12c In Memory
• Algorithmes et optimisations
– Utilisation du format adéquat
09/02/2016 21
• Transactionnel et analytique en même temps
– Les traitements OLTP tirent bénéfice de l’organisation en lignes
– Les traitements analytiques tirent bénéfice de l’organisation en
colonnes
CBO
Oracle 12c In Memory
• Algorithmes et optimisations
– Réduire le nombre d’opérations
09/02/2016 22
Suppression des
index analytiques
(Bitmap)
Optimisation par le format
de l’IMCU qui intègre la
valeur minimale et maximale
Oracle 12c In Memory
• Si une transaction est enregistrée sur le buffer cache
– le pool IM est maintenu consistant par le Transaction
Manager
– L’image avant est maintenue dans le pool IM (SMU)
– La lecture consistante est gérée via le SCN … comme
auparavant
– La transaction est enregistrée dans les redo log … comme
auparavant
09/02/2016 23
Oracle 12c In Memory
• Traitement à plusieurs + filtrage
• Opérations SIMD (Single Instruction Multiple Data)
– Instructions CPU non spécifiques à Oracle
– Disponibles chez Intel dans les jeux d’instructions SSE (SSE,
SSE2, SSE3, SSE4), AVX, AVX2 et AVX-512
– Disponibles sur Power PC, Sparc (VIS & VIS2)
– Utilisation de registres vectoriels
– Permet de traiter plusieurs données en une seule
instruction
09/02/2016 24
Oracle 12c In Memory
• Opérations SIMD
– Registre de 128 octets (8 x 16 octets)
– 1024 opérations en mode scalaire = 128 op. en
SIMD
09/02/2016 25
Le format d’IMCU est
particuliérement adapté à
ces opérations
Oracle 12c In Memory
• Opérations SIMD
– Les nouveaux processeurs Intel Xeon E5-V3
intégreront les instructions AVX-512 avec des
registres de 512 octets
– Références
• http://www.intel.com/content/dam/www/public/us/en/documents/white-
papers/performance-xeon-e5-v3-advanced-vector-extensions-paper.pdf
• https://software.intel.com/sites/default/files/m/d/4/1/d/8/Intro_to_Intel_AVX.pdf
09/02/2016 26
Oracle 12c In Memory
• Filtrage et optimisation des jointures
• Filtre de Bloom
– Structure de données probabiliste (tableau de bits)
– Permet d’affirmer :
• Avec certitude, qu’une valeur ne fait pas partie d’un jeu de
données
• Sans certitude, qu’une valeur fait partie d’un jeu de données (faux
positifs qui diminuent avec la taille du jeu de données)
09/02/2016 27
Plus d’information sur la structure
- http://antognini.ch/papers/BloomFilters20080620.pdf
- http://fr.wikipedia.org/wiki/Filtre_de_Bloom
Oracle 12c In Memory
09/02/2016 28
• Filtres de bloom
– Utilisés depuis Oracle 10g notamment :
• Partition Pruning
• Optimisation des jointures par HASH
• Smart Scan Exadata (Elimination des données
sur le storage server)
Oracle 12c In Memory
09/02/2016 29
• Filtres de bloom sur Oracle 12c In Memory
– Optimisation des jointures en utilisant la structure de données IMCU
et les instructions SIMD
CL_ID NOM PAYS
1 Dupont FR
2 Gilmour UK
3 Martin FR
4 Schultz DE
5 Durand FR
6 Waters UK
7 Mason UK
8 Wright UK
9 Lindemann DE
10 Kruspe DE
CL_ID V_ID MONTANT
1 1 150
2 2 300
9 3 10
8 4 350
2 5 180
7 6 654
4 7 1524
4 8 354
9 9 136
10 5 789
…/… …/… …/…
SELECT c.NOM, v.V_ID
FROM CLIENT c, VENTE v
WHERE PAYS=‘UK’
AND v.MONTANT>150
AND C.CL_ID=V.CL_ID
Bloom Filter
CL_ID in
2,6,7,8
HASH
JOIN
4 Lignes 4 Lignes
Oracle 12c In Memory
• Optimisation des agrégations
• Transformation par double vecteur de clé
– Optimiser les agrégations de données (GROUP BY) en
tirant partie du format en colonne (VECTEUR)
– Transformation opérée par le CBO
– Optimisation des requêtes analytiques avec le format en
colonne
09/02/2016 30
Oracle 12c In Memory
• Transformation par double vecteur de clé
09/02/2016 31
MAG_ID LIEU
EN001 Englos
LE001 Leers
LE002 Lens
SE001 Seclin
V2001 V2
…/… …/…
PR_ID NOM
CHI1 Chimay
DUV1 Duvel
GRI1 Grimbergen
KAR1 Karmeliet
KWA1 Kwak
LEF1 Leffe
WES1 Westmalle
MAG
_ID
PR_ID MONTANT
SE001 GRI1 150
SE001 DUV1 300
LE002 KWA1 10
SE001 LEF1 350
V2001 WES1 180
LE001 GRI1 654
SE001 WES1 1524
EN001 KAR1 354
LE001 CHI1 136
V2001 WES1 789
…/… …/… …/…
0 3 1 2 4 5
1 0 2 4 5 6 3
CHI1 DUV1 GRI1 KAR1 KWA1 LEF1 WES1
EN001
LE001
LE002
SE001 150 1524
V2001 180
789
1- Création d’un vecteur de clés sur PR_ID
1- Création d’un vecteur de clés sur MAG_ID
2- Applications des
vecteurs de clés
(prédicat de jointure)
3 - Création d’un accumulateur des données IM
(à la volée)
4 – Calcul des agrégats
Oracle 12c In Memory
• Agenda
– Structure de données
– Opérations de chargement et de compression
– Algorithmes et optimisations
– Quelques résultats
– RAC, Multitenant, Exadata
– La concurrence
– Etude de ROI
09/02/2016 32
Oracle 12c In Memory
• Contexte #1
– Base d’environ 15Go
– Oracle Enterprise Linux 7 : 4 vCPU
– Extensions ssse3 (SIMD)
– Charge de type TPC-H : historique des ventes
• 22 requêtes analytiques
• Résultats exprimés en QphH (Queries per hour)
– Passe 1 : SGA : 22Go et INMEMORY_SIZE : 0 (Buffer Cache : 20Go),
PGA : 5Go
– Passe 2 : SGA : 22Go et INMEMORY_SIZE : 10Go (Buffer Cache : 10Go)
sans données montées en pool IM , PGA : 5Go.
– Passe 3 : SGA : 22Go et INMEMORY_SIZE : 10Go (Buffer Cache : 10Go)
avec données montées (Compression QUERY HIGH), PGA : 5Go.
09/02/2016 33
Oracle 12c In Memory
09/02/2016 34
0
5000
10000
15000
20000
25000
30000
R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22
TEMPS(1/100SECONDE)
REQUETE
Comparaison In Memory serveur local (Elasped time)
TPCH@10 BC 20Go - T2 TPCH@10 BC 10Go - T2 TPCH@10 IM 10Go - T2
Oracle 12c In Memory
• Contexte #2
– Base d’environ 50 Go
– Instance EC2 Amazon : 8 vCPU sous Redhat EL 7
– Extensions AVX
– Charge de type TPC-H : historique des ventes
• 22 requêtes analytiques
• Résultats exprimés en en QphH (Queries per hour)
– Passe 1 : SGA : 55Go et INMEMORY_SIZE : 22,5 Go (Buffer Cache :
10Go) sans données montées en pool IM, PGA : 5Go.
– Passe 2 : SGA : 55Go et INMEMORY_SIZE : 22,5 Go (Buffer Cache :
10Go) avec données montées (Compression QUERY HIGH), PGA :
5Go.
09/02/2016 35
Oracle 12c In Memory
09/02/2016 36
0
10000
20000
30000
40000
50000
60000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Comparaison In Memory Amazon EC2 (Elasped time)
TPCH@30 BC (AWS 55Go SGA + 22,5Go IM) TPCH@30 IM (AWS 55Go SGA + 22,5Go IM)
Oracle 12c In Memory
• Résultats
09/02/2016 37
Oracle 12c In Memory
• Agenda
– Structure de données
– Opérations de chargement et de compression
– Algorithmes et optimisations
– Quelques résultats
– RAC, Multitenant, Exadata
– La concurrence
– Etude de ROI
09/02/2016 38
Oracle 12c In Memory
• RAC
– Chaque nœud dispose de son pool IM
– Les objets sont automatiquement distribués sur
tous les nœuds
– La distribution est gérée au niveau segment
(TABLE, PARTITION, SOUS PARTITION)
– Les requêtes peuvent être parallélisées sur tous
les nœuds pour obtenir des données locales
09/02/2016 39
SQL> ALTER TABLE CUSTOMER INMEMORY DISTRIBUTE AUTO;
SQL> ALTER TABLE SALES INMEMORY DISTRIBUTE BY PARTITION;
Oracle 12c In Memory
• Multitenant
– Par défaut, les pluggable databases (PDB) héritent
de la configuration du conteneur root
– La taille du pool IM est configurable par PDB
– Le surprovisionnement est possible
09/02/2016 40
Oracle 12c In Memory
• Ai-je encore besoin de mon Exadata ?
– Exadata étend les données analytiques au cache
Flash et aux disques de l’Exadata
– Bénéfice du Smart Scan
– Sur Exadata les IMCU sont copiés sur les autres
computes nodes afin d’assurer la tolérance de
panne
09/02/2016 41
In Memory ne remplace
pas Exadata, il en augmente
la puissance
Oracle 12c In Memory
• Agenda
– Structure de données
– Opérations de chargement et de compression
– Algorithmes et optimisations
– Quelques résultats
– RAC, Multitenant, Exadata
– La concurrence
– Etude de ROI
09/02/2016 42
Oracle 12c In Memory
• Combien ça coûte ?
– Option de l’Enterprise Edition
– 23 000$ / CPU Oracle (2 cores Intel) soit environ 18400€
… non négocié par votre partenaire
• Vous trouvez ça cher ?
• Qui a dit ? : « Nous reconnaissons que notre technologie est
plus chère qu’Oracle »
• Qui a dit ? : « Nous assumons n’accorder aucune réduction à
nos produits, contrairement aux usages en France »
09/02/2016 43
Franck Cohen
Président EMEA - SAP
Franck Cohen
Président EMEA - SAP
Source : http://www.silicon.fr/usf-sap-hana-trop-cher-89969.html
Oracle 12c In Memory
• SAP Hana
– Nécessite une appliance dédiée supportée par HANA (Dell, IBM etc.)
– Appliances limitées par la DRAM (http://scn.sap.com/docs/DOC-
52522#jive_content_id_Supported_Hardware_Platforms_RHEL_for_SAP_HANA_Single_Node_ )
– SAP HANA utilise deux caches (lignes et colonnes)
– Les opérations de fusions des données de caches (automatiques)
peuvent s’avérer problématiques lors de forte activité transactionnelle
(http://scn.sap.com/community/developer-center/hana/blog/2014/06/08/oltp-performace-tunning-
of-column-table-in-sap-hana)
“…/…
Two segments of data in different store format will be processed and the calculator always switches
between column engine and row engine, which results in bad performance. We recommend doing a
manual merge when data in Delta area is large enough or after executing sequences of transactions.
…/…”
– Nécessité de réécrire les applications et revoir les middleware
09/02/2016 44
Oracle 12c In Memory
• SAP Hana
– Coûts liés à l’OPEX : nouvelle équipe, formation du
personnel, nouvelles procédures etc.
– Coûts liés au CAPEX : nouveau hardware, nouveaux
logiciels
– Haute disponibilité via cluster « Shared Nothing »
• Réplication du stockage et des systèmes
• Architecture complexe
– Serveur de noms MASTER ou SLAVE : la topologie du cluster
– Serveur d’indexation WORKER ou STANDBY : contient les datastores et traite
l’information
– Serveur de statistiques : collecte les informations de statut, performance et
consommation ressources
• Rôle et nombre de serveurs difficilement interopérables09/02/2016 45
Oracle 12c In Memory
• SQL Server 2014 : OLTP In Memory Optimization
– Optimisation pour l’OLTP
– Pool In Memory limité à 250 Go (http://msdn.microsoft.com/en-
us/library/dn170449.aspx)
– De nombreuses limitations dans la gestion des transactions
sur les tables InMemory (cf. http://msdn.microsoft.com/en-
us/library/dn133169.aspx, partie Limitations)
• Nécessité de réécrire une partie du code
09/02/2016 46
Oracle 12c In Memory
• IBM DB2 10.5 With BLU Acceleration
- Les tables sont organisées en ligne OU en colonne
- L’utilisation colonne + ligne (shadow tables) utilise un
mécanisme de réplication basé sur IBM InfoSphere CDC
(Réplication)
- Solution complexe à mettre en œuvre
- Solution nécessitant de nombreux produits (Information Server,
Replication Server, Access Server, et Management Console)
- Utilise un stockage sur SSD mais pas en DRAM
09/02/2016 47
Oracle 12c In Memory
• Agenda
– Structure de données
– Opérations de chargement et de compression
– Algorithmes et optimisations
– Quelques résultats
– RAC, Multitenant, Exadata
– La concurrence
– Etude de ROI
09/02/2016 48
Oracle 12c In Memory
• ROI : Contexte
– Application Oracle déjà en place sur EE + Partitionnement
– Estimation de coût en €/QphH
– Achat de 4 CPUs In Memory (8 cores Intel).
– Base de travail : test sur EC2 Amazon (plus représentatif)
– Investissement :
• Licences : 4 x 18 400€ = 73600 €
• Prestation d’accompagnement (5 à 10j) : 9000€
• 0 Formation, 0 DBA en plus
09/02/2016 49
Economie de : 201,84 € par QphH
Amortissement ≈ 409j ≈ 1,1 année
QphH@30g
€/QphH
(Base de location AWS :
17500€/3ans)
TPCH@30 BC (AWS EC2) 61,06 286,60
TPCH@30 IM (AWS EC2) 206,47 84,76
Oracle 12c In Memory
• Cas d’utilisation
– Batch de calcul des approvisionnements magasins
• Intégration des données de Stock
• Intégration de l’historique des ventes
• Intégration des offres promotionnelles
– Allongement de la durée (Criticité de fin de traitements)
– Problème dans l’approvisionnement des magasins
– Avec In Memory column Store
• Le batch est réduit de 3h
• Les colis partent à temps
• Les magasins sont approvisionnés à l’heure
09/02/2016 50
Oracle 12c in memory en action
CONCLUSION
Emmanuel Docquois – Ingénieur Avant Vente
09/02/2016 52
@techsys_fr

Contenu connexe

PPTX
Realtime Web avec Kafka, Spark et Mesos
PDF
EBIZNEXT-RIAK
PDF
Cassandra Ippevent 20 Juin 2013
PDF
Les nouveautés de MySQL 5.1
PDF
Étude de cas : migration MySQL Latin 1 vers UTF-8
PDF
Riak introduction
PDF
T1 corrections-qcm
PDF
Jp perez correction quizz oracle mairie de paris acma 2007 2008
Realtime Web avec Kafka, Spark et Mesos
EBIZNEXT-RIAK
Cassandra Ippevent 20 Juin 2013
Les nouveautés de MySQL 5.1
Étude de cas : migration MySQL Latin 1 vers UTF-8
Riak introduction
T1 corrections-qcm
Jp perez correction quizz oracle mairie de paris acma 2007 2008

Tendances (20)

PPTX
Concepts de sauvegarde et de récupération
PDF
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
PDF
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
PDF
Confoo 2022 - le cycle d'une instance MySQL
PPTX
Les bonnes pratiques pour migrer d'Oracle vers Postgres
 
PPT
Presentation of Oracle database products for Beginners
PDF
Haute disponibilité my sql avec group réplication
PDF
Jeudis du Libre - MySQL comme Document Store
PPT
Oracle Cluster Rac
PDF
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
PDF
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
PDF
Administration oracle7
PDF
Delta Lake, un vernis pour parquet
PDF
Le futur d'apache cassandra
PDF
Apache Cassandra - Concepts et fonctionnalités
PPTX
Comment sauvegarder correctement vos données
 
PDF
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
PPTX
Webinar Degetel DataStax
PPTX
Réplication de base de données oracle avec Golden Gate
PDF
BigData_Chp3: Data Processing
Concepts de sauvegarde et de récupération
Paris Scala User Group #43 - Spray (Magnet Pattern) + RxScala / ElasticSearch
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Confoo 2022 - le cycle d'une instance MySQL
Les bonnes pratiques pour migrer d'Oracle vers Postgres
 
Presentation of Oracle database products for Beginners
Haute disponibilité my sql avec group réplication
Jeudis du Libre - MySQL comme Document Store
Oracle Cluster Rac
MHA : MySQL haute dispo, chez Viadeo par Olivier Dasini
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Administration oracle7
Delta Lake, un vernis pour parquet
Le futur d'apache cassandra
Apache Cassandra - Concepts et fonctionnalités
Comment sauvegarder correctement vos données
 
MySQL 5.7 & JSON - Nouvelles opportunités pour les dévelopeurs
Webinar Degetel DataStax
Réplication de base de données oracle avec Golden Gate
BigData_Chp3: Data Processing
Publicité

En vedette (20)

PPTX
tow nodes Oracle 12c RAC on virtualbox
PDF
SQL Monitoring in Oracle Database 12c
KEY
Hanganalyze presentation
PDF
Oracle 12c r1 installation on solaris 11.1
PPTX
Ukoug15 SIMD outside and inside Oracle 12c (12.1.0.2)
PDF
Oracle Database In-Memory Option in Action
PDF
HBase Status Report - Hadoop Summit Europe 2014
PDF
Modern Linux Performance Tools for Application Troubleshooting
PPTX
How oracle 12c flexes its muscles against oracle 11g r2 final
PDF
SQL in the Hybrid World
PPTX
Oracle 12c SQL: Date Ranges
PPTX
Data Pipelines in Hadoop - SAP Meetup in Tel Aviv
PPTX
Oracle 12c Automatic Dynamic Sampling
PDF
Oracle 12 Upgrade
PDF
How to Upgrade Hundreds or Thousands of Databases
PDF
Upgrade/Migrate to Oracle 12c: Live and Uncensored!
PPTX
SQL-on-Hadoop Tutorial
PDF
Non-Stop Hadoop for Hortonworks
PDF
Connecting Hadoop and Oracle
PDF
Oracle 12c Multi Process Multi Threaded
tow nodes Oracle 12c RAC on virtualbox
SQL Monitoring in Oracle Database 12c
Hanganalyze presentation
Oracle 12c r1 installation on solaris 11.1
Ukoug15 SIMD outside and inside Oracle 12c (12.1.0.2)
Oracle Database In-Memory Option in Action
HBase Status Report - Hadoop Summit Europe 2014
Modern Linux Performance Tools for Application Troubleshooting
How oracle 12c flexes its muscles against oracle 11g r2 final
SQL in the Hybrid World
Oracle 12c SQL: Date Ranges
Data Pipelines in Hadoop - SAP Meetup in Tel Aviv
Oracle 12c Automatic Dynamic Sampling
Oracle 12 Upgrade
How to Upgrade Hundreds or Thousands of Databases
Upgrade/Migrate to Oracle 12c: Live and Uncensored!
SQL-on-Hadoop Tutorial
Non-Stop Hadoop for Hortonworks
Connecting Hadoop and Oracle
Oracle 12c Multi Process Multi Threaded
Publicité

Similaire à Oracle 12c in memory en action (20)

PPTX
Deep Dive Performance , le In-Memory dans SQL Server
PPTX
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
PPTX
PPTX
USI 2013 : 7 changements nécessaires pour sauver vos SI décisionnels
PDF
Distributed computing with Spark 2.x
PDF
CV - Database Administrator ( French )
PDF
Presentation intis 2017 version27112017
PDF
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
PPT
OSA02 - Pas de transactionnel haute performance sans un couple machine logici...
PPT
LP_Admin_base_données.ppt
PDF
No Sql - Olivier Mallassi - September 2010
PPT
Principes Relationnels et Concepts Oracle
PDF
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
PDF
Présentation/Atelier oxya
PDF
Future of data center french
PDF
Future of data center french
PDF
20160216 - From BigData to BigProcessing
PPTX
Réussir une montée en charge avec MongoDB
PDF
Dba oracle-v1
Deep Dive Performance , le In-Memory dans SQL Server
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
USI 2013 : 7 changements nécessaires pour sauver vos SI décisionnels
Distributed computing with Spark 2.x
CV - Database Administrator ( French )
Presentation intis 2017 version27112017
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
OSA02 - Pas de transactionnel haute performance sans un couple machine logici...
LP_Admin_base_données.ppt
No Sql - Olivier Mallassi - September 2010
Principes Relationnels et Concepts Oracle
Stockage et Cloud [#CloudAccelerate 13/06/2014 @ IBM CC Paris]
Présentation/Atelier oxya
Future of data center french
Future of data center french
20160216 - From BigData to BigProcessing
Réussir une montée en charge avec MongoDB
Dba oracle-v1

Oracle 12c in memory en action

  • 1. Oracle 12c In Memory en action Laurent Léturgez – Techsys 12 Novembre 2014 1
  • 2. Oracle 12c In Memory • Agenda – Structure de données – Opérations de chargement et de compression – Algorithmes et optimisations – Quelques résultats – RAC, Multitenant, Exadata – La concurrence – Etude de ROI 09/02/2016 2
  • 3. Oracle 12c In Memory 09/02/2016 3 Contexte : - Base d’historique des ventes - Deux schémas de 15Go environ - Schéma 1 (TPCH_PART) : Fonctionnement classique - Schéma 2 (TPCHIM_PART) : Fonctionnement in Memory - Exécution de deux requêtes analytiques dans les deux schémas
  • 4. Oracle 12c In Memory • Agenda – Structure de données – Opérations de chargement et de compression – Algorithmes et optimisations – Quelques résultats – RAC, Multitenant, Exadata – La concurrence – Etude de ROI 09/02/2016 4
  • 5. Oracle 12c In Memory 09/02/2016 5 Volumétries grandissantes Besoin en analyse de données Besoin de rapidité d’exécution
  • 6. Oracle 12c In Memory 09/02/2016 6 Volumétries grandissantes Besoin en analyse de données Besoin de rapidité d’exécution Structure de données adaptée
  • 7. Oracle 12c In Memory • Agenda – Structure de données – Opérations de chargement et de compression – Algorithmes et optimisations – Quelques résultats – RAC, Multitenant, Exadata – La concurrence – Etude de ROI 09/02/2016 7
  • 8. Oracle 12c In Memory • Quoi de neuf avec Oracle 12c In Memory Column Store ? – Une nouvelle zone mémoire: « in Memory column store » – Un nouveau format : les données sont organisées en colonne dans cette zone mémoire – Le format en ligne est conservé 09/02/2016 8
  • 9. Oracle 12c In Memory • In Memory column store : paramétrage – Configuré en SGA par le paramètre INMEMORY_SIZE (mini 100Mo) – Ce n’est pas un cache mais un « magasin » … donc pas d’algorithme de vieillissement (LRU/MRU) 09/02/2016 9
  • 10. Oracle 12c In Memory • In Memory column store : Constitution • Pool IMCU : In Memory Compression Unit – Contient les unités de compression (CU) : Données formatées en colonne • Pool SMU – Stocke les Snapshot Metadata Unit (Equivalent des undo pour l’IM) 09/02/2016 10
  • 11. Oracle 12c In Memory • L’IMCU structure de données centrale – Unité d’allocation pour le stockage des données d’une colonne – Chaque colonne est stockée dans un espace contigüe séparé des autres colonnes 09/02/2016 11
  • 12. Oracle 12c In Memory • L’IMCU structure de données centrale 09/02/2016 12 Marque Karmeliet Chimay Chimay Duvel Chimay Duvel Westmalle Duvel Karmeliet Clé Valeur 0 Chimay 1 Duvel 2 Karmeliet 3 Wesmalle CU Min = Chimay Max = Westmalle 2 0 0 1 0 1 3 1 2 Dictionnaire :
  • 13. Oracle 12c In Memory • Agenda – Structure de données – Opérations de chargement et de compression – Algorithmes et optimisations – Quelques résultats – RAC, Multitenant, Exadata – La concurrence – Etude de ROI 09/02/2016 13
  • 14. Oracle 12c In Memory • Provisionnement du pool In Memory • Montée d’une table dans le pool In Memory 09/02/2016 14 SQL> ALTER SYSTEM SET INMEMORY_SIZE=10G SCOPE=SPFILE; SQL> SHUTDOWN IMMEDIATE SQL> STARTUP SQL> ALTER TABLE SALES INMEMORY; SQL> ALTER TABLE SALES INMEMORY (PRODUCT_ID); SQL> ALTER TABLE SALES NO INMEMORY; SQL> ALTER TABLE SALES 2 > MODIFY PARTITION SALES_Q2_1998 INMEMORY;
  • 15. Oracle 12c In Memory • Priorité de montée en mémoire – NONE < LOW < MEDIUM < HIGH < CRITICAL – Détermine comment sont montées les colonnes en mémoire • NONE (Défaut) : montée lors du premier accès • CRITICAL : montée immédiate ET au démarrage d’instance 09/02/2016 15 SQL> ALTER TABLE CUSTOMER INMEMORY PRIORITY CRITICAL; SQL> ALTER TABLE CUSTOMER INMEMORY PRIORITY NONE;
  • 16. Oracle 12c In Memory 09/02/2016 16 Volumétries grandissantes Besoin en analyse de données Besoin de rapidité d’exécution Structure de données adaptée Compression des données
  • 17. Oracle 12c In Memory • Compression – Objectif : réduire la volumétrie des données en mémoire – Format IMCU adapté à une compression efficace – Différents niveaux • DML • QUERY LOW (défaut) • QUERY HIGH • CAPACITY LOW • CAPACITY HIGH 09/02/2016 17 SQL> ALTER TABLE CUSTOMER INMEMORY MEMCOMPRESS FOR QUERY HIGH; SQL> ALTER TABLE ORDERS INMEMORY MEMCOMPRESS FOR DML; Taux de compression Rapidité d’exécution des requêtes
  • 18. Oracle 12c In Memory 09/02/2016 18 Volumétries grandissantes Besoin en analyse de données Besoin de rapidité d’exécution Structure de données adaptée Compression des données Algorithmes adaptés
  • 19. Oracle 12c In Memory • Agenda – Structure de données – Opérations de chargement et de compression – Algorithmes et optimisations – Quelques résultats – RAC, Multitenant, Exadata – La concurrence – Etude de ROI 09/02/2016 19
  • 20. Oracle 12c In Memory • Algorithmes et optimisations –Objectifs • Réduire les volumes traités (filtres) • Réduire le nombre d’opérations (traitements à plusieurs, utilisation du format adéquat) • Limiter l’impact des volumes sur les traitements (optimisation des jointures, des opérations d’agrégation) 09/02/2016 20
  • 21. Oracle 12c In Memory • Algorithmes et optimisations – Utilisation du format adéquat 09/02/2016 21 • Transactionnel et analytique en même temps – Les traitements OLTP tirent bénéfice de l’organisation en lignes – Les traitements analytiques tirent bénéfice de l’organisation en colonnes CBO
  • 22. Oracle 12c In Memory • Algorithmes et optimisations – Réduire le nombre d’opérations 09/02/2016 22 Suppression des index analytiques (Bitmap) Optimisation par le format de l’IMCU qui intègre la valeur minimale et maximale
  • 23. Oracle 12c In Memory • Si une transaction est enregistrée sur le buffer cache – le pool IM est maintenu consistant par le Transaction Manager – L’image avant est maintenue dans le pool IM (SMU) – La lecture consistante est gérée via le SCN … comme auparavant – La transaction est enregistrée dans les redo log … comme auparavant 09/02/2016 23
  • 24. Oracle 12c In Memory • Traitement à plusieurs + filtrage • Opérations SIMD (Single Instruction Multiple Data) – Instructions CPU non spécifiques à Oracle – Disponibles chez Intel dans les jeux d’instructions SSE (SSE, SSE2, SSE3, SSE4), AVX, AVX2 et AVX-512 – Disponibles sur Power PC, Sparc (VIS & VIS2) – Utilisation de registres vectoriels – Permet de traiter plusieurs données en une seule instruction 09/02/2016 24
  • 25. Oracle 12c In Memory • Opérations SIMD – Registre de 128 octets (8 x 16 octets) – 1024 opérations en mode scalaire = 128 op. en SIMD 09/02/2016 25 Le format d’IMCU est particuliérement adapté à ces opérations
  • 26. Oracle 12c In Memory • Opérations SIMD – Les nouveaux processeurs Intel Xeon E5-V3 intégreront les instructions AVX-512 avec des registres de 512 octets – Références • http://www.intel.com/content/dam/www/public/us/en/documents/white- papers/performance-xeon-e5-v3-advanced-vector-extensions-paper.pdf • https://software.intel.com/sites/default/files/m/d/4/1/d/8/Intro_to_Intel_AVX.pdf 09/02/2016 26
  • 27. Oracle 12c In Memory • Filtrage et optimisation des jointures • Filtre de Bloom – Structure de données probabiliste (tableau de bits) – Permet d’affirmer : • Avec certitude, qu’une valeur ne fait pas partie d’un jeu de données • Sans certitude, qu’une valeur fait partie d’un jeu de données (faux positifs qui diminuent avec la taille du jeu de données) 09/02/2016 27 Plus d’information sur la structure - http://antognini.ch/papers/BloomFilters20080620.pdf - http://fr.wikipedia.org/wiki/Filtre_de_Bloom
  • 28. Oracle 12c In Memory 09/02/2016 28 • Filtres de bloom – Utilisés depuis Oracle 10g notamment : • Partition Pruning • Optimisation des jointures par HASH • Smart Scan Exadata (Elimination des données sur le storage server)
  • 29. Oracle 12c In Memory 09/02/2016 29 • Filtres de bloom sur Oracle 12c In Memory – Optimisation des jointures en utilisant la structure de données IMCU et les instructions SIMD CL_ID NOM PAYS 1 Dupont FR 2 Gilmour UK 3 Martin FR 4 Schultz DE 5 Durand FR 6 Waters UK 7 Mason UK 8 Wright UK 9 Lindemann DE 10 Kruspe DE CL_ID V_ID MONTANT 1 1 150 2 2 300 9 3 10 8 4 350 2 5 180 7 6 654 4 7 1524 4 8 354 9 9 136 10 5 789 …/… …/… …/… SELECT c.NOM, v.V_ID FROM CLIENT c, VENTE v WHERE PAYS=‘UK’ AND v.MONTANT>150 AND C.CL_ID=V.CL_ID Bloom Filter CL_ID in 2,6,7,8 HASH JOIN 4 Lignes 4 Lignes
  • 30. Oracle 12c In Memory • Optimisation des agrégations • Transformation par double vecteur de clé – Optimiser les agrégations de données (GROUP BY) en tirant partie du format en colonne (VECTEUR) – Transformation opérée par le CBO – Optimisation des requêtes analytiques avec le format en colonne 09/02/2016 30
  • 31. Oracle 12c In Memory • Transformation par double vecteur de clé 09/02/2016 31 MAG_ID LIEU EN001 Englos LE001 Leers LE002 Lens SE001 Seclin V2001 V2 …/… …/… PR_ID NOM CHI1 Chimay DUV1 Duvel GRI1 Grimbergen KAR1 Karmeliet KWA1 Kwak LEF1 Leffe WES1 Westmalle MAG _ID PR_ID MONTANT SE001 GRI1 150 SE001 DUV1 300 LE002 KWA1 10 SE001 LEF1 350 V2001 WES1 180 LE001 GRI1 654 SE001 WES1 1524 EN001 KAR1 354 LE001 CHI1 136 V2001 WES1 789 …/… …/… …/… 0 3 1 2 4 5 1 0 2 4 5 6 3 CHI1 DUV1 GRI1 KAR1 KWA1 LEF1 WES1 EN001 LE001 LE002 SE001 150 1524 V2001 180 789 1- Création d’un vecteur de clés sur PR_ID 1- Création d’un vecteur de clés sur MAG_ID 2- Applications des vecteurs de clés (prédicat de jointure) 3 - Création d’un accumulateur des données IM (à la volée) 4 – Calcul des agrégats
  • 32. Oracle 12c In Memory • Agenda – Structure de données – Opérations de chargement et de compression – Algorithmes et optimisations – Quelques résultats – RAC, Multitenant, Exadata – La concurrence – Etude de ROI 09/02/2016 32
  • 33. Oracle 12c In Memory • Contexte #1 – Base d’environ 15Go – Oracle Enterprise Linux 7 : 4 vCPU – Extensions ssse3 (SIMD) – Charge de type TPC-H : historique des ventes • 22 requêtes analytiques • Résultats exprimés en QphH (Queries per hour) – Passe 1 : SGA : 22Go et INMEMORY_SIZE : 0 (Buffer Cache : 20Go), PGA : 5Go – Passe 2 : SGA : 22Go et INMEMORY_SIZE : 10Go (Buffer Cache : 10Go) sans données montées en pool IM , PGA : 5Go. – Passe 3 : SGA : 22Go et INMEMORY_SIZE : 10Go (Buffer Cache : 10Go) avec données montées (Compression QUERY HIGH), PGA : 5Go. 09/02/2016 33
  • 34. Oracle 12c In Memory 09/02/2016 34 0 5000 10000 15000 20000 25000 30000 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 TEMPS(1/100SECONDE) REQUETE Comparaison In Memory serveur local (Elasped time) TPCH@10 BC 20Go - T2 TPCH@10 BC 10Go - T2 TPCH@10 IM 10Go - T2
  • 35. Oracle 12c In Memory • Contexte #2 – Base d’environ 50 Go – Instance EC2 Amazon : 8 vCPU sous Redhat EL 7 – Extensions AVX – Charge de type TPC-H : historique des ventes • 22 requêtes analytiques • Résultats exprimés en en QphH (Queries per hour) – Passe 1 : SGA : 55Go et INMEMORY_SIZE : 22,5 Go (Buffer Cache : 10Go) sans données montées en pool IM, PGA : 5Go. – Passe 2 : SGA : 55Go et INMEMORY_SIZE : 22,5 Go (Buffer Cache : 10Go) avec données montées (Compression QUERY HIGH), PGA : 5Go. 09/02/2016 35
  • 36. Oracle 12c In Memory 09/02/2016 36 0 10000 20000 30000 40000 50000 60000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Comparaison In Memory Amazon EC2 (Elasped time) TPCH@30 BC (AWS 55Go SGA + 22,5Go IM) TPCH@30 IM (AWS 55Go SGA + 22,5Go IM)
  • 37. Oracle 12c In Memory • Résultats 09/02/2016 37
  • 38. Oracle 12c In Memory • Agenda – Structure de données – Opérations de chargement et de compression – Algorithmes et optimisations – Quelques résultats – RAC, Multitenant, Exadata – La concurrence – Etude de ROI 09/02/2016 38
  • 39. Oracle 12c In Memory • RAC – Chaque nœud dispose de son pool IM – Les objets sont automatiquement distribués sur tous les nœuds – La distribution est gérée au niveau segment (TABLE, PARTITION, SOUS PARTITION) – Les requêtes peuvent être parallélisées sur tous les nœuds pour obtenir des données locales 09/02/2016 39 SQL> ALTER TABLE CUSTOMER INMEMORY DISTRIBUTE AUTO; SQL> ALTER TABLE SALES INMEMORY DISTRIBUTE BY PARTITION;
  • 40. Oracle 12c In Memory • Multitenant – Par défaut, les pluggable databases (PDB) héritent de la configuration du conteneur root – La taille du pool IM est configurable par PDB – Le surprovisionnement est possible 09/02/2016 40
  • 41. Oracle 12c In Memory • Ai-je encore besoin de mon Exadata ? – Exadata étend les données analytiques au cache Flash et aux disques de l’Exadata – Bénéfice du Smart Scan – Sur Exadata les IMCU sont copiés sur les autres computes nodes afin d’assurer la tolérance de panne 09/02/2016 41 In Memory ne remplace pas Exadata, il en augmente la puissance
  • 42. Oracle 12c In Memory • Agenda – Structure de données – Opérations de chargement et de compression – Algorithmes et optimisations – Quelques résultats – RAC, Multitenant, Exadata – La concurrence – Etude de ROI 09/02/2016 42
  • 43. Oracle 12c In Memory • Combien ça coûte ? – Option de l’Enterprise Edition – 23 000$ / CPU Oracle (2 cores Intel) soit environ 18400€ … non négocié par votre partenaire • Vous trouvez ça cher ? • Qui a dit ? : « Nous reconnaissons que notre technologie est plus chère qu’Oracle » • Qui a dit ? : « Nous assumons n’accorder aucune réduction à nos produits, contrairement aux usages en France » 09/02/2016 43 Franck Cohen Président EMEA - SAP Franck Cohen Président EMEA - SAP Source : http://www.silicon.fr/usf-sap-hana-trop-cher-89969.html
  • 44. Oracle 12c In Memory • SAP Hana – Nécessite une appliance dédiée supportée par HANA (Dell, IBM etc.) – Appliances limitées par la DRAM (http://scn.sap.com/docs/DOC- 52522#jive_content_id_Supported_Hardware_Platforms_RHEL_for_SAP_HANA_Single_Node_ ) – SAP HANA utilise deux caches (lignes et colonnes) – Les opérations de fusions des données de caches (automatiques) peuvent s’avérer problématiques lors de forte activité transactionnelle (http://scn.sap.com/community/developer-center/hana/blog/2014/06/08/oltp-performace-tunning- of-column-table-in-sap-hana) “…/… Two segments of data in different store format will be processed and the calculator always switches between column engine and row engine, which results in bad performance. We recommend doing a manual merge when data in Delta area is large enough or after executing sequences of transactions. …/…” – Nécessité de réécrire les applications et revoir les middleware 09/02/2016 44
  • 45. Oracle 12c In Memory • SAP Hana – Coûts liés à l’OPEX : nouvelle équipe, formation du personnel, nouvelles procédures etc. – Coûts liés au CAPEX : nouveau hardware, nouveaux logiciels – Haute disponibilité via cluster « Shared Nothing » • Réplication du stockage et des systèmes • Architecture complexe – Serveur de noms MASTER ou SLAVE : la topologie du cluster – Serveur d’indexation WORKER ou STANDBY : contient les datastores et traite l’information – Serveur de statistiques : collecte les informations de statut, performance et consommation ressources • Rôle et nombre de serveurs difficilement interopérables09/02/2016 45
  • 46. Oracle 12c In Memory • SQL Server 2014 : OLTP In Memory Optimization – Optimisation pour l’OLTP – Pool In Memory limité à 250 Go (http://msdn.microsoft.com/en- us/library/dn170449.aspx) – De nombreuses limitations dans la gestion des transactions sur les tables InMemory (cf. http://msdn.microsoft.com/en- us/library/dn133169.aspx, partie Limitations) • Nécessité de réécrire une partie du code 09/02/2016 46
  • 47. Oracle 12c In Memory • IBM DB2 10.5 With BLU Acceleration - Les tables sont organisées en ligne OU en colonne - L’utilisation colonne + ligne (shadow tables) utilise un mécanisme de réplication basé sur IBM InfoSphere CDC (Réplication) - Solution complexe à mettre en œuvre - Solution nécessitant de nombreux produits (Information Server, Replication Server, Access Server, et Management Console) - Utilise un stockage sur SSD mais pas en DRAM 09/02/2016 47
  • 48. Oracle 12c In Memory • Agenda – Structure de données – Opérations de chargement et de compression – Algorithmes et optimisations – Quelques résultats – RAC, Multitenant, Exadata – La concurrence – Etude de ROI 09/02/2016 48
  • 49. Oracle 12c In Memory • ROI : Contexte – Application Oracle déjà en place sur EE + Partitionnement – Estimation de coût en €/QphH – Achat de 4 CPUs In Memory (8 cores Intel). – Base de travail : test sur EC2 Amazon (plus représentatif) – Investissement : • Licences : 4 x 18 400€ = 73600 € • Prestation d’accompagnement (5 à 10j) : 9000€ • 0 Formation, 0 DBA en plus 09/02/2016 49 Economie de : 201,84 € par QphH Amortissement ≈ 409j ≈ 1,1 année QphH@30g €/QphH (Base de location AWS : 17500€/3ans) TPCH@30 BC (AWS EC2) 61,06 286,60 TPCH@30 IM (AWS EC2) 206,47 84,76
  • 50. Oracle 12c In Memory • Cas d’utilisation – Batch de calcul des approvisionnements magasins • Intégration des données de Stock • Intégration de l’historique des ventes • Intégration des offres promotionnelles – Allongement de la durée (Criticité de fin de traitements) – Problème dans l’approvisionnement des magasins – Avec In Memory column Store • Le batch est réduit de 3h • Les colis partent à temps • Les magasins sont approvisionnés à l’heure 09/02/2016 50
  • 52. CONCLUSION Emmanuel Docquois – Ingénieur Avant Vente 09/02/2016 52

Notes de l'éditeur

  • #4: Gestion en cache de buffer (régit par LRU/MRU) Optimal pour Transaction courte Le verrouillage ligne (depuis 1988) Moins optimal pour Les lectures volumineuses Les requêtes analytiques La compression Avant 1970, bases de données hiérarchiques (manipulation complexe et peu performantes) 1979 : premiers SGBD relationnels et normalisation du SQL Années 1990 : apparition des datawarehouses Années 2000-2010 : explosion du volume des données stockées