oracle database 21c new performance features

38
oracle-performance.de Oracle Database 21c New Performance Features Randolf Eberle-Geist oracle-performance.de

Upload: others

Post on 20-May-2022

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Oracle Database 21c New Performance Features

oracle-performance.de

Oracle Database 21cNew Performance Features

Randolf Eberle-Geist

oracle-performance.de

Page 2: Oracle Database 21c New Performance Features

oracle-performance.de

oracle-performance.de

• Independent consultant

• Performance Troubleshooting

• In-house workshops

• Cost-Based Optimizer

• Performance By Design

• Oracle ACE Director Alumni

• Member of OakTable Network

Oracle Database 21c New Performance Features2

2009-2016 Alumni

Page 3: Oracle Database 21c New Performance Features

oracle-performance.de

Agenda

• 21c new performance features

• Previous versions noticeable performance features

Oracle Database 21c New Performance Features3

Page 4: Oracle Database 21c New Performance Features

oracle-performance.de

21c New Performance Features

• SQL Macros (partially backported to 19c! (>= 19.6))

• Dynamic Sequence Cache (backported to 19c! (>= 19.10))

• Automatic SQL Tuning Set (ASTS) (backported to 19c! (>= 19.7))

• Automatic Zonemaps / Materialized Views (Exadata only)

=> Object Activity Tracking System (OATS)

• In Memory / Hash Join improvements

• Persistence Memory (PMEM) support

Oracle Database 21c New Performance Features4

Page 5: Oracle Database 21c New Performance Features

oracle-performance.de

Previous versions noticeable performance features (1)

• Parallel Execution enhancements

• Attribute Clustering / Zonemaps (Zonemaps Exadata only)

• Database statistics enhancements (partially Exadata only)

• Approximate query / Top N processing

Oracle Database 21c New Performance Features5

Page 6: Oracle Database 21c New Performance Features

oracle-performance.de

Previous versions noticeable performance features (2)

• PRAGMA UDF for PL/SQL functions called from SQL

• New built-in “always on” Index usage monitoring

• Private temporary tables

• Scalable Sequences

• Memoptimized read and write rowstore (Exadata only)

Oracle Database 21c New Performance Features6

Page 7: Oracle Database 21c New Performance Features

oracle-performance.de

Previous versions noticeable performance features (3)

• Bitmap based COUNT(DISTINCT)

• SQL Quarantine (Exadata Only)

Oracle Database 21c New Performance Features7

Page 8: Oracle Database 21c New Performance Features

oracle-performance.de

SQL Macros

• Advanced text replacement logic at parse time

• PL/SQL logic evaluated at parse time, returned string replaces macro expression in SQL and the resulting SQL string is parsed / evaluated by optimizer

• No execution of PL/SQL at runtime!

• Basic idea is reusability and encapsulation similar to PL/SQL functions but without the overhead and performance / optimizer implications

Oracle Database 21c New Performance Features8

Page 9: Oracle Database 21c New Performance Features

oracle-performance.de

SQL Macros

• Two flavours: SCALAR (21c only) and TABLE (backported to 19c)

• TABLE Macros can only be used in the FROM clause

• SCALAR Macros everywhere else (projection, selection)

• Always defined as functions (with optional parameters) that return a string that will be put into the SQL in place of the SQL Macro

• The string returned can contain some replacement logic / “magic” based on the parameters passed into the SQL Macro

Oracle Database 21c New Performance Features9

Page 10: Oracle Database 21c New Performance Features

oracle-performance.de

SQL Macros

DEMO!

Oracle Database 21c New Performance Features10

21c New Performance Features Scalar SQL Macros Demo.sql21c New Performance Features Table SQL Macros Demo.sql

Page 11: Oracle Database 21c New Performance Features

oracle-performance.de

SQL Macros

• Basic promise is kept: Encapsulation and reusability without sacrifyingperformance – full visibility to optimizer

• Complex scenarios possible, in particular for TABLE SQL Macros using polymorphism

• But some noticeable limitations / counterintuitive behaviour in current releases

Oracle Database 21c New Performance Features11

Page 12: Oracle Database 21c New Performance Features

oracle-performance.de

Dynamic Sequence Cache

• Any sequence defined with a CACHE size > 0 will get its cache size automatically dynamically resized at runtime if Oracle recognizes frequent usage of the sequence

• The CACHE_SIZE setting of the sequence isn’t updated

• The dynamic resize at runtime will adapt to the sequence usage

• It looks like sequences defined as NOCACHE don’t benefit from the feature

Oracle Database 21c New Performance Features12

Page 13: Oracle Database 21c New Performance Features

oracle-performance.de

Dynamic Sequence Cache

DEMO!

Oracle Database 21c New Performance Features13

dynamic_sequence_cache_demo.sqldynamic_sequence_cache_demo2.sql

Page 14: Oracle Database 21c New Performance Features

oracle-performance.de

Dynamic Sequence Cache

https://docs.oracle.com/en/database/oracle/oracle-database/21/nfcon/sequence-dynamic-cache-resizing-336399199.html

https://docs.oracle.com/en/database/oracle/oracle-database/21/admin/managing-views-sequences-and-synonyms.html#GUID-83FA2D7D-6119-4182-94EA-60554024A2CE

Oracle Database 21c New Performance Features14

Page 15: Oracle Database 21c New Performance Features

oracle-performance.de

Automatic SQL Tuning Set (ASTS) 19.7+

• Introduced in RU 19.7 as backport, enabled by default

• Starting with RU 19.8 disabled by default

• Collects *all* plans for *all* queries seen – in contrast to AWR not only the top n “relevant” ones

• Automatic Indexing relies on it

• The idea is that plan regressions can be tackled more efficiently by identifying previously used good plans in the ASTS – automatic SQL plan management can do this automatically. With ASTS deactivated AWR might miss good executions that are not “relevant” enough during “good” times

Oracle Database 21c New Performance Features15

Page 16: Oracle Database 21c New Performance Features

oracle-performance.de

Automatic SQL Tuning Set (ASTS) 19.7+-- View captured SQL statementsSelect sql_textfrom dba_sqlset_Statementswhere sqlset_name = 'SYS_AUTO_STS';

-- Enable / disable taskBegin

DBMS_Auto_Task_Admin.Enable(Client_Name => 'Auto STS Capture Task',Operation => NULL,Window_name => NULL);

End;/

BeginDBMS_Auto_Task_Admin.Disable(

Client_Name => 'Auto STS Capture Task',Operation => NULL,Window_name => NULL);

End;/

-- View task statusSelect Task_Name, EnabledFrom DBA_AutoTask_Schedule_ControlWhere Task_Name = 'Auto STS Capture Task';

Oracle Database 21c New Performance Features16

Page 17: Oracle Database 21c New Performance Features

oracle-performance.de

Automatic SQL Tuning Set (ASTS) 19.7+

DEMO!

Oracle Database 21c New Performance Features17

automatic_sql_tuning_set_asts_demo.sql

Page 18: Oracle Database 21c New Performance Features

oracle-performance.de

Parallel Execution Enhancements

• Various smaller enhancements since Oracle 12c

• Most of them aim for improving data distribution among Parallel Execution Servers: Hybrid hash / broadcast distribution (12c), Automatic skew handling (12c), Parallel Filter evaluation (12c) Null Random (18c), Adaptive PX BLOCK ITERATOR (19c)

• But the biggest threat still comes from additional BUFFEREDoperations in Parallel Execution plans due to internal implementation limitations

Oracle Database 21c New Performance Features18

Page 19: Oracle Database 21c New Performance Features

oracle-performance.de

Parallel Execution Enhancements

• Either these are separate, additional BUFFER SORT operations

• Or the “famous” HASH JOIN BUFFERED – which means this operation has to “buffer” all surviving rows of the second row source to join –which is the (hopefully) larger one, and hence could mean significant additional work

• Oracle 18c has introduced the new “shared” HASH JOIN

• But even in 21c it’s not yet production ready

Oracle Database 21c New Performance Features19

Page 20: Oracle Database 21c New Performance Features

oracle-performance.de

Parallel Execution Enhancements

• HASH JOIN SHARED is based on the new MGA (“Managed Global Area”) concept – a dynamically allocated, shared memory for a specific purpose and duration, in principle like “shared” PGA memory

• The Parallel Execution Server built each their hash table in MGA

• All Parallel Execution Servers share the “global” hash table during the probe phase

• Side effect: No specific re-distribution of data required!

Oracle Database 21c New Performance Features20

Page 21: Oracle Database 21c New Performance Features

oracle-performance.de

Parallel Execution Enhancements

• SHARED HASH JOIN improves the Parallel Hash Join in two ways:

• No re-distribution overhead

• No need for HASH JOIN BUFFERED

• Should give many users of Parallel Execution a significant performance boost!

Oracle Database 21c New Performance Features21

Page 22: Oracle Database 21c New Performance Features

oracle-performance.de

Parallel Execution Enhancements

DEMO!

Oracle Database 21c New Performance Features22

21c New Performance Features Parallel Execution enhancements.sql

Page 23: Oracle Database 21c New Performance Features

oracle-performance.de

Parallel Execution Enhancements

https://chinaraliyev.wordpress.com/2019/04/29/parallel-shared-hash-join/

MGA (Managed Global Area) Reference Note (Doc ID 2638904.1)

Sizing the PGA in Oracle 19c - How to Account for the MGA Size (Doc ID 2808761.1)

Oracle Database 21c New Performance Features23

Page 24: Oracle Database 21c New Performance Features

oracle-performance.de

Attribute Clustering

• Clustering data is one of the most underused and powerful performance features

• In previous releases only possible using specific non-heap table storage (Indexed / Hash Cluster / Index organized table (IOT)) or via manual implementation, so best suited for OLTP applications

• Non-heap table implementations do have some implications that need to be carefully considered (Cluster size, secondary indexes on IOTs etc.) and limited support for later features like partitioning, offloading in Exadata etc.

Oracle Database 21c New Performance Features24

Page 25: Oracle Database 21c New Performance Features

oracle-performance.de

Attribute Clustering

• Attribute Clustering enables clustering of data in heap organized tables, but only during specific Direct Path operations, like INSERT APPEND, Create Table As Select, ALTER TABLE MOVE, Direct Path Load etc.

• Suites best Data Warehouse environments where Indexed / Hash Cluster and IOTs are not useful due to the limited fast data load / partition / indexing options

• Covers advanced scenarios like join clustering and clustering on multiple columns individually

• Can be combined with Zonemaps (on Exadata only unfortunately) for improving performance even further

Oracle Database 21c New Performance Features25

Page 26: Oracle Database 21c New Performance Features

oracle-performance.de

Attribute Clustering improves

• Index access patterns – table blocks for same index value are clustered together, improves index access performance and Buffer Cache efficiency (less table blocks need to be cached for access patterns optimized via clustering)

• Compression – table data holding the same values are clustered together, improved compression ratio, applies not only to Advanced Compression but Exadata Hybrid Columnar Compression (HCC) and InMemorycompression, too

• Exadata Storage Index usage / Zonemaps / InMemory pruning – table blocks / storage regions / InMemory Compression Units not holding the data searched for can be skipped

Oracle Database 21c New Performance Features26

Page 27: Oracle Database 21c New Performance Features

oracle-performance.de

Index access with scattered data

1,000 rows => visit 1,000 table blocks: 1,000 * 5ms = 5 s

Page 28: Oracle Database 21c New Performance Features

oracle-performance.de

Index access with clustered data

1,000 rows => visit 10 table blocks: 10 * 5ms = 50 ms

Page 29: Oracle Database 21c New Performance Features

oracle-performance.de

Nested Loop join with scattered data

Page 30: Oracle Database 21c New Performance Features

oracle-performance.de

Nested Loop join with clustered data

Page 31: Oracle Database 21c New Performance Features

oracle-performance.de

Attribute Clustering Linear vs. Interleaved

• Two types available

• LINEAR ORDER: Straightforward ORDER by specified column(s)

=> Only useful when using columns in specified order

• INTERLEAVED ORDER: Complex function that allows clustering being beneficial even when individual columns are specified

=> Internally implemented using undocumented functions ORA_CLUSTERING / ORA_RAWCONCAT etc.

Oracle Database 21c New Performance Features31

Page 32: Oracle Database 21c New Performance Features

oracle-performance.de

Attribute Clustering Linear vs. Interleaved

Oracle Database 21c New Performance Features32

Page 33: Oracle Database 21c New Performance Features

oracle-performance.de

Attribute Clustering

DEMO!

Oracle Database 21c New Performance Features33

06_ac_only_simple_clustering.sql06a_ac_only_simple_clustering_interleaved.sql06_ac_only_join_clustering.sql06_ac_only_join_clustering_demo.sql

Page 34: Oracle Database 21c New Performance Features

oracle-performance.de

Oracle Database 21cNew Performance Features

Thank you!

Q&A

Page 35: Oracle Database 21c New Performance Features

oracle-performance.de

Automatic Zonemaps / Materialized Views (Exadata only)https://docs.oracle.com/en/database/oracle/oracle-database/21/nfcon/automatic-materialized-views-264164435.html

https://docs.oracle.com/en/database/oracle/oracle-database/21/tgdba/auto_material_views.html#GUID-4E9D8731-2AE2-459A-ACFB-03C44D2A1ADD

Oracle Database 21c New Performance Features35

Page 36: Oracle Database 21c New Performance Features

oracle-performance.de

In Memory / Hash Join improvements

https://docs.oracle.com/en/database/oracle/oracle-database/21/inmem/optimizing-queries-with-join-groups.html#GUID-55F66F65-1568-4B53-B79E-F841B94659CA

Oracle Database 21c New Performance Features36

Page 37: Oracle Database 21c New Performance Features

oracle-performance.de

Persistence Memory (PMEM) support

https://docs.oracle.com/en/database/oracle/oracle-database/21/nfcon/persistent-memory-database-258797846.html

https://docs.oracle.com/en/database/oracle/oracle-database/21/admin/using-PMEM-db-support.html#GUID-A7ACCD50-30BD-49D1-AC34-14F143D4CD6D

Oracle Database 21c New Performance Features37

Page 38: Oracle Database 21c New Performance Features

oracle-performance.de

AskTOM Office Hours

https://asktom.oracle.com/pls/apex/f?p=100:500:::NO:RP,500::

Oracle Database 12c/18c/19c New Features38