oracle in-memory and all that - wordpress.com...sep 07, 2016 · our in-memory journey 5 oracle 11g...
TRANSCRIPT
Oracle In-Memory
and all that
1
Fuhrer Alain, DBA Team-leader, [email protected] Wyssenbach, Senior DBA [email protected] 2016
Agenda
1.Swiss Mobiliar in a nut shell
2.Use case
3. Results
4. Q & A
2
Swiss Mobiliar in a nut shell
The most personal insurer in Switzerland
3
Oldest private insurance company in CH
Working as a mutual insurance company
since its foundation in 1826
Prime volume: 3.5 billions CHF
About 1.7 million customers = every 3rd CH-household
Close distance to customers guaranteed:
79 general agencies with their own claims departement
at about 160 locations
Employees in CH / FL: more then 4’400, 325 trainees
Swiss Mobiliar’s IT mission statement
«Deploy and Run innovative technologies for efficient business processes»
Systems: iOS, Linux, Windows and z/OS
5’000 notebooks, 1’800 iPhones, 300 iPads
DBMS: Oracle, DB/2, IMS, MS SQL Server, Neo4j
Standard-SW (ArcGIS, SAP, BO, Siebel, COR Life etc.)
Majority of business functions provided
by home-grown applications
4
Our In-Memory journey
5
Oracle 11g R2
rows only
rely on indexes
rely on mat-views
rely on partitioning
rely on parallel execution
Oracle 12c β
added In-Memory
tested compression
tested robustness
tested usability
tested performance
Oracle 12c
gained practical
experience
gained performance
with bundle patches
Oracle 12.2 β
tested again
remarkable improvements
remarkable new features
2014 2015 2016
Use case – why is it relevant to us?
6
Insurance is about offering products and managing risk.
We‘ve created our own application to keep track of information.
Our teams in product management and risk management use it.
We separated data platform (Oracle) and analytics(SAS).
The data platform has always been demanding:
Simple yet flexible data model
Increasing data volume
Increasing complexity of analytic queries
We track resource consumption using our Performance DWH.
Business data
used for analytics
Performance data
used by IT operations
Use case – logical view
7
Anybody needs information about their:
customers, contracts
products, tariffs, contractual items
contract details
including their entire history.
Customers
Contracts
Contract details
Contractualitems
Products Tariffs
Typical questions:
Which contractual items have been applicable
in a given period of time?
What is the benefit / impact when changing a tariff?
Anybody wants flexibility when adding / changing
offerings (insurance products, services)
Over time the complexity of analytic queries rises:
more and increasingly complex filtering
comparison of data sets on the fly
more data sources to be joined
Use case – technical view
8
One X86 server
• four CPUs
• 32 cores in total
• 3 TB RAM
Table 1
6k records
Table 2
25M records
Table 3
545M records
1:n
1:n
Inner joins on less than 10 tables
30+ GB on disk
15 GB In-
Memory
Table 4
6+ G records
partition 0001o..m
o..m
50+ outer joins to partition(s)
( even more needed )
130+ GB on disk
19 GB In-Memory
partition nnnn
partition 0001partition 0001
partition 2582
partition nnnnpartition 0137
partition 0002partition 0001
Measurement:
• Use 7 different
periods for
business query
• Average
elapsed time
Example: inner join (3 tables) & outer joins (55 tables) 150k result set
9
Execution plan: 271 lines; no visible parsing effort
Partition pruning in action
I/O 23 GB & idle buffer cacheDOP=16:26sec elapsed & 425 sec DB time
Advances since 12.1 – push-down of COUNT() and other functions
10
0.00
0.50
1.00
1.50
2.00
2.50
1 2 4 8 16 32
Oracle In-Memory - COUNT(*) for varying DOP inner joins only
12.1 July 2016 bundle patch 12.2 BETA3
elapsed time
in seconds
degree of parallelismDOP = #cores
Advances since 12.1 – push-down of COUNT() and other functions
11
0.10
1.00
10.00
100.00
(3,0) (3,5) (3,10) (3,15) (3,20) (3,25) (3,30) (3,35) (3,40) (3,45) (3,50) (3,55)
Oracle In-Memory - COUNT(*), DOP = 16inner joins AND increasing number of outer joins to 100k to 140M records
12.1 July 2016 bundle patch 12.2 BETA3
elapsed time
in seconds
joined tables (inner joins, outer joins)
Advances since 12.1 – push-down of COUNT() and other functions
12
0.1
1
10
100
1000
1 2 4 8 16 32
Oracle In-Memory - COUNT(*) for varying DOPinner joins AND 55 outer joins to 100k to 140M records
12.1 Dec 2015 12.1 July 2016 bundle patch 12.2 BETA3
elapsed time
in seconds
degree of parallelism
DOP = #cores
Advances since 12.1 – join-efficiency
13
0.00
2.00
4.00
6.00
8.00
10.00
12.00
14.00
1 2 4 8 16 32
Oracle In-Memory – FULL SCAN for varying DOP inner joins only
12.1 July 2016 bundle patch 12.2 BETA3
elapsed time
in seconds
degree of parallelism DOP = #cores
Advances since 12.1 – join-efficiency
14
1.00
10.00
100.00
(3,0) (3,5) (3,10) (3,15) (3,20) (3,25) (3,30) (3,35) (3,40) (3,45) (3,50) (3,55)
Oracle In-Memory – FULL SCAN, DOP = 16inner joins AND increasing number of outer joins to 100k to 140M records
12.1 July 2016 bundle patch 12.2 BETA3
elapsed time
in seconds
joined tables (inner joins, outer joins)
Advances since 12.1 – join-efficiency
15
10
100
1000
1 2 4 8 16 32
Oracle In-Memory - FULL SCANtab1: 6k rows / tab2: 25M rows / tab3: 545M rows / outer-joins: 100k to 140M rows
12.2 Dec 2015 12.1 July 2016 bundle patch 12.2 BETA3
elapsed time
in seconds
degree of parallelism
DOP = #cores
Our next stop on the Oracle In-Memory journey
16
Remarkable performance improvements observed
• PUSH-DOWN ist great fpr COUNT(), SUM(), MIN(), MAX()
• Vector transformation in 12.1 used to stress TEMP. In 12.2 BETA we had no such issues.
Remarkable features, that we still haven‘t embraced in beta testing
• Join groups to gain even higher join performance
• Detection of expressions by In-memory and reduction of CPU load
• Information lifecycle management for In-Memory
Remarkable features that fit our architecture needs
• In-Memory within a PDB
• AWR per PDB
• In-Memory on a remote database
Summary
17
I glous nid scho fertig.
I can‘t believe it finished already.