SlideShare a Scribd company logo
1 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Best Practices for Oracle Exadata and the
Oracle Optimizer
Maria Colgan, Product Manager, Oracle Optimizer
Levi Norman, Product Marketing Director, Oracle Exadata
2 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
• Fastest Data Warehouse & OLTP
• Best Cost/Performance Data Warehouse & OLTP
• Optimized Hardware
• Software Breakthroughs
• Scales from ¼ Rack to 8 Full Racks
Oracle Exadata Database Machine
Extreme performance. Lowest cost.
3 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Hybrid Columnar Compression Smart Flash
Cache
Smart Scan Queries
Up to
50X10X
+ ++
Oracle Exadata Innovation
Storage Server Software
4 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Standardized and Simple to Deploy
Delivered Ready-to-Run
• Oracle Exadata Database Machines Are The Same
Thoroughly Tested & Highly Supportable
Identical Configuration Used by Oracle Engineering
• Run Existing OLTP and DW Applications
30 Years of Oracle DB Capabilities
No Exadata Certification Required
• Leverage Oracle Ecosystem
Skills, Knowledge Base, People, & Partners
5 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Oracle Exadata in the Market
Rapid Adoption Across Geographies and Industries
6 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Agenda
• How to gather statistics
• Additional types of statistics
• When to gather statistics
• Statistics gathering performance
7 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
• Analyze command is deprecated
– Only good for row chaining
• The GATHER_*_STATS procedures take 13 parameters
– Ideally you should only set the first 2-3 parameters
• SCHEMA NAME
• TABLE NAME
• PARTITION NAME
Use DBMS_STATS Package
8 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
Use DBMS_STATS Package
• Your gather statistics commands should be this simple
9 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
• Can change the default value at the global level
– DBMS_STATS.SET_GLOBAL_PREF
– This changes the value for all existing objects and any new objects
• Can change the default value at the table level
– DBMS_STATS.SET_TABLE_PREF
Changing Default Parameter Values for Gathering Statistics
10 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
• CASCADE
• CONCURRENT
• DEGREE
• ESTIMATE_PERCENT
• METHOD_OPT
• NO_INVALIDATE
• GRANULARITY
• PUBLISH
• INCREMENTAL
• STALE_PERCENT
• AUTOSTATS_TARGET
(SET_GLOBAL_PREFS only)
Changing Default Parameter Values for Gathering Statistics
•The following parameter defaults can be changed:
11 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
• # 1 most commonly asked question
– “What sample size should I use?”
• Controlled by ESTIMATE_PRECENT parameter
• From 11g onwards use default value AUTO_SAMPLE_SIZE
– New hash based algorithm
– Speed of a 10% sample
– Accuracy of 100% sample
Sample Size
12 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
How to Gather Statistics
• Speed of a 10% sample
• Accuracy of 100% sample
Sample Size
Run Num AUTO_SAMPLE_SIZE 10% SAMPLE 100% SAMPLE
1 00:02:21.86 00:02:31.56 00:08:24.10
2 00:02:38.11 00:02:49.49 00:07:38.25
3 00:02:39.31 00:02:38.55 00:07:37.83
Column
Name
NDV with
AUTO_SAMPLE_SIZE
NDV with 10%
SAMPLE
NDV with 100%
SAMPLE
C1 59852 31464 60351
C2 1270912 608544 1289760
C3 768384 359424 777942
13 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Agenda
• How to gather statistics
• Additional types of statistics
• When to gather statistics
• Statistics gathering performance
14 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Additional Types of Statistics
• Two types of Extended Statistics
– Column groups statistics
• Column group statistics useful when multiple column from the same
table are used in where clause predicates
– Expression statistics
• Expression statistics useful when a column is used as part of a
complex expression in where clause predicate
• Can be manually or automatically created
• Automatically maintained when statistics are gathered
When Table and Column Statistics are not enough
15 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics –
SELECT * FROM vehicles
WHERE model = ‘530xi’
AND color = 'RED’;
Column Group Statistics
SLIVERC320MERC
REDSLKMERC
RED911PORSCHE
SILVER530xiBMW
BLACK530xiBMW
RED530xiBMW
ColorModelMake
Vehicles Table
Cardinality #ROWS * 1 * 1 12 * 1 * 1 1
NDV c1 NDV c2 4 3
= =>
MAKE MODEL COLOR
BMW 530xi RED
=
16 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
SELECT * FROM vehicles WHERE model = ‘530xi’
AND make = ‘BMW’;
Column Group Statistics
SLIVERC320MERC
REDSLKMERC
RED911PORSCHE
SILVER530xiBMW
BLACK530xiBMW
RED530xiBMW
ColorModelMake
Vehicles Table
Cardinality #ROWS * 1 * 1 12 * 1 * 1 1
NDV c1 NDV c2 4 3
= => =
MAKE MODEL COLOR
BMW 530xi RED
BMW 530xi BLACK
BMW 530xi SLIVER
17 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
• Create extended statistics on the Model & Make columns using
DBMS_STATS.CREATE_EXTENDED_STATS
Column Group Statistics
New Column
with system
generated
name
18 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
SELECT * FROM vehicles WHERE model = ‘530xi’
AND make = ‘BMW’;
Column Group Statistics
SLIVERC320MERC
REDSLKMERC
RED911PORSCHE
SILVER530xiBMW
BLACK530xiBMW
RED530xiBMW
ColorModelMake
Vehicles Table
Cardinality calculated using column group statistics
MAKE MODEL COLOR
BMW 530xi RED
BMW 530xi BLACK
BMW 530xi SLIVER
19 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
SELECT *
FROM Customers
WHERE UPPER(CUST_LAST_NAME) = ‘SMITH’;
• Optimizer doesn’t know how function affects values in the column
• Optimizer guesses the cardinality to be 1% of rows
SELECT count(*) FROM customers;
COUNT(*)
55500
Expression Statistics
Cardinality estimate
is 1% of the rows
20 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
Expression Statistics
New Column with
system generated
name
21 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
1. Start column group usage capture
Automatic Column Group Detection
• Oracle can automatically
detect column group
candidates based on an STS
or by monitoring a workload
• Uses DBMS_STATS procedure
SEED_COL_USAGE
• If the first two arguments are
set to NULL the current
workload will be monitored
• The third argument is the
time limit in seconds
22 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
2. Run your workload
Automatic Column Group Detection
• Actual number of rows
returned by this query is 932
• Optimizer under-estimates
the cardinality as it assumes
each where clause predicate
will reduce number of rows
returned
• Optimizer is not aware of
real-world relations between
city, state, & country
23 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
2. Run your workload
Automatic Column Group Detection
• Actual number of rows
returned by this query is 145
• Optimizer over-estimates the
cardinality as it is not aware
of the real-world relations
between state & country
24 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Extended Statistics
3. Check column usage information recorded for our table
Automatic Column Group Detection
COLUMN USAGE REPORT FOR SH.CUSTOMERS
1. COUNTRY_ID : EQ
2. CUST_CITY : EQ
3. CUST_STATE_PROVINCE : EQ
4. (CUST_CITY, CUST_STATE_PROVINCE, COUNTRY_ID) : FILTER
5. (CUST_STATE_PROVINCE, COUNTRY_ID) : GROUP_BY
SELECT dbms_stats.report_col_usage(user, 'customers') FROM dual;
EQ means column was used in
equality predicate in query 1
GROUP_BY columns used in group
by expression in query 2
FILTER means columns used together
as filter predicates rather than join
etc. Comes from query 1
25 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Enhancements
4. Create extended stats for customers based on usage
EXTENSIONS FOR SH.CUSTOMERS
1. (CUST_CITY, CUST_STATE_PROVINCE, COUNTRY_ID):
SYS_STUMZ$C3AIHLPBROI#SKA58H_N created
2. (CUST_STATE_PROVINCE, COUNTRY_ID) :
SYS_STU#S#WF25Z#QAHIHE#MOFFMM_ created
Column group statistics will now be automatically maintained
every time you gather statistics on this table
Automatic Column Group Detection
SELECT dbms_stats.create_extended_stats(user, 'customers')
FROM dual;
26 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Agenda
• How to gather statistics
• Additional types of statistics
• When to gather statistics
• Statistics gathering performance
27 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
When to Gather Statistics
• Oracle automatically collect statistics for all database
objects, which are missing or have stale statistics
• AutoTask run during a predefined maintenance window
• Internally prioritizes the database objects
– Both user schema and dictionary tables
– Objects that need updated statistics most are processed first
• Controlled by DBMS_AUTO_TASK_ADMIN package or via
Enterprise Manager
Automatic Statistics Gathering
28 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
When to Gather Statistics
Automatic Statistics Gathering in Enterprise Manager
• Enterprise Manager allows
you to control all aspects of
the automatic statistics
gathering task
• The statistics gathering task
can be set to only run during
certain maintenance windows
29 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
When to Gather Statistics
• If you want to disable auto job for application schema
leaving it on for Oracle dictionary tables
• The scope of the auto job is controlled by the global
preference AUTOSTATS_TARGET
• Possible values are
– AUTO Oracle decides what tables need statistics (Default)
– All Statistics gathered for all tables in the system
– ORACLE Statistics gathered for only the dictionary tables
Automatic Statistics Gathering
30 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
When to Gather Statistics
• Need to determine when to manually gather statistics
• After large data loads
– Add statistics gather to the ETL or ELT process
• If trickle loading or online transactions
– Manually determine when statistics are stale and trigger gather
– USER_TAB_MODIFICATIONS lists # INSERTS, UPDATES, and
DELETES that occurs on each table
• If trickle loading into a partition table
– Used dbms.stats.copy_table_stats()
If the Auto Statistics Gather Job is not suitable
31 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
When to Gather Statistics
If the Auto Statistics Gather Job is not suitable
Partitioned Table
Partition 1
June 1st 2012
:
Partition 4
June 4th 2012
Partition 5
June 5th 2012
DBMS_STATS.COPY_TABLE_STATS();
• Copies statistic from source
partition to new partition
• Adjusts min & max values for
partition column
• Both partition & global statistics
• Copies statistics of the
dependent objects
• Columns, local (partitioned)
indexes* etc.
• Does not update global indexes
32 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Agenda
• How to gather statistics
• Additional types of statistics
• When to gather statistics
• Statistics gathering performance
33 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
• Three parallel options to speed up statistics gathering
– Inter object using parallel execution
– Intra object using concurrency
– The combination of Inter and Intra object
• Incremental statistics gathering for partitioned tables
How to speed up statistics gathering
34 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
• Controlled by GATHER_*_STATS parameter DEGREE
• Default is to use parallel degree specified on object
• If set to AUTO Oracle decide parallel degree used
• Works on one object at a time
Inter Object using parallel execution
35 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
Inter Object using parallel execution
P4
P3
P2
P1
Customers
Table
• Customers table has a
degree of parallelism of 4
• 4 parallel server processes
will be used to gather stats
36 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
Inter Object using parallel execution
Exec DBMS_STATS.GATHER_TABLE_STATS(‘SH’,’SALES);
Sales Table
Partition 1
May 18th 2012
Partition 2
May 19th 2012
Partition 3
May 20th 2012
• Each individual partition will
have statistics gathered one
after the other
• The statistics gather
procedure on each individual
partition operates in parallel
BUT the statistics gathering
procedures won’t happen
concurrently
P4
P3
P2
P1
37 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
• Gather statistics on multiple objects at the same time
• Controlled by DBMS_STATS preference, CONCURRENT
• Uses Database Scheduler and Advanced Queuing
• Number of concurrent gather operations controlled by
job_queue_processes parameter
• Each gather operation can still operate in parallel
Intra Object
38 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
Intra Object Statistics Gathering for SH Schema
Exec DBMS_STATS.GATHER_SCHEMA_STATS(‘SH’);
• A statistics gathering job is
created for each table and
partition in the schema
• Level 1 contain statistics
gathering jobs for all non-
partitioned tables and a
coordinating job for each
partitioned table
• Level 2 contain statistics
gathering jobs for each
partition in the partitioned
tables
39 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
Inter Object using concurrent parallel execution
Exec DBMS_STATS.GATHER_TABLE_STATS(‘SH’,’SALES);
Sales Table
Partition 1
May 18th 2012
Partition 2
May 19th 2012
Partition 3
May 20th 2012
Job1
Job2
Job3
• The number of concurrent
gathers is controlled by the
parameter
job_queue_processes
• In this example it is set to 3
• Remember each concurrent
gather operates in parallel
• In this example parallel
degree is 4
40 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Statistics Gathering Performance
• Typically gathering statistics after a bulk loading data
into one partition would causes a full scan of all
partitions to gather global table statistics
– Extremely time consuming
• With Incremental Statistic gather statistics for touched
partition(s) ONLY
– Table (global) statistics are accurately built from partition statistics
– Reduce statistics gathering time considerably
– Controlled by INCREMENTAL preference
Incremental Statistics Gathering for Partitioned tables
41 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Incremental Statistics Gathering
Sales Table
May 22nd 2011
May 23rd 2011
May 18th 2011
May 19th 2011
May 20th 2011
May 21st 2011
Sysaux Tablespace
1. Partition level stats are
gathered & synopsis created
2. Global stats generated by aggregating
partition level statistics and synopsis
42 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
Incremental Statistics Gathering
Sales Table
May 22nd 2011
May 23rd 2011
May 18th 2011
May 19th 2011
May 20th 2011
May 21st 2011
Sysaux Tablespace
May 24th 2011
4. Gather partition
statistics for new partition
5. Retrieve synopsis for
each of the other partitions
from Sysaux
6. Global stats generated by aggregating
the original partition synopsis with the
new one
3. A new partition is added to the table & Data is Loaded
43 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.
More Information
• Accompanying Two Part White Paper Series
– Understanding Optimizer Statistics
– Best Practices for Managing Optimizer Statistics
• Optimizer Blog
– http://blogs.oracle.com/optimizer
• Oracle.com
– http://www.oracle.com/technetwork/database/focus-areas/bi-
datawarehousing/dbbi-tech-info-optmztn-092214.html
• Oracle Exadata Database Machine
– http://www.oracle.com/exadata
44 Copyright © 2011, Oracle and/or its affiliates. All rights
reserved.

More Related Content

PDF
Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo...
PDF
Exadata and the Oracle Optimizer: The Untold Story
PPTX
Indexing in Exadata
PDF
Troubleshooting Complex Performance issues - Oracle SEG$ contention
PDF
How to Use Oracle RAC in a Cloud? - A Support Question
PDF
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
PDF
Oracle db performance tuning
PDF
Parallel Query on Exadata
Tuning SQL for Oracle Exadata: The Good, The Bad, and The Ugly Tuning SQL fo...
Exadata and the Oracle Optimizer: The Untold Story
Indexing in Exadata
Troubleshooting Complex Performance issues - Oracle SEG$ contention
How to Use Oracle RAC in a Cloud? - A Support Question
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
Oracle db performance tuning
Parallel Query on Exadata

What's hot (20)

PDF
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
PDF
Nabil Nawaz Oracle Oracle 12c Data Guard Deep Dive Presentation
PDF
My First 100 days with an Exadata (PPT)
PDF
Oracle Performance Tuning Fundamentals
PDF
Oracle RAC 19c: Best Practices and Secret Internals
PDF
Oracle Extended Clusters for Oracle RAC
PDF
Oracle RAC - New Generation
PPTX
Oracle RAC features on Exadata
PDF
Exploring Oracle Database Performance Tuning Best Practices for DBAs and Deve...
PPTX
Oracle sql high performance tuning
PPTX
Oracle 23c New Features For DBAs and Developers.pptx
PPTX
Oracle GoldenGate Performance Tuning
PDF
Exadata_X10M-Hardware-Overview.pdf
PPTX
Sun Oracle Exadata Technical Overview V1
PDF
Exadata SMART Monitoring - OEM 13c
PDF
The Oracle RAC Family of Solutions - Presentation
PDF
Data guard oracle
PDF
Oracle Active Data Guard: Best Practices and New Features Deep Dive
PDF
Exadata X8M-2 KVM仮想化ベストプラクティス
PDF
Oracle RAC 19c with Standard Edition (SE) 2 - Support Update
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Nabil Nawaz Oracle Oracle 12c Data Guard Deep Dive Presentation
My First 100 days with an Exadata (PPT)
Oracle Performance Tuning Fundamentals
Oracle RAC 19c: Best Practices and Secret Internals
Oracle Extended Clusters for Oracle RAC
Oracle RAC - New Generation
Oracle RAC features on Exadata
Exploring Oracle Database Performance Tuning Best Practices for DBAs and Deve...
Oracle sql high performance tuning
Oracle 23c New Features For DBAs and Developers.pptx
Oracle GoldenGate Performance Tuning
Exadata_X10M-Hardware-Overview.pdf
Sun Oracle Exadata Technical Overview V1
Exadata SMART Monitoring - OEM 13c
The Oracle RAC Family of Solutions - Presentation
Data guard oracle
Oracle Active Data Guard: Best Practices and New Features Deep Dive
Exadata X8M-2 KVM仮想化ベストプラクティス
Oracle RAC 19c with Standard Edition (SE) 2 - Support Update
Ad

Viewers also liked (7)

PPTX
HIgh Performance Messaging App Development with Oracle Advance Queuing
PDF
Best Practices – Extreme Performance with Data Warehousing on Oracle Databa...
PDF
Oracle Exadata Performance: Latest Improvements and Less Known Features
PDF
RMAN in 12c: The Next Generation (WP)
PPTX
Oracle Database Appliance X5-2
PDF
Oracle Database Appliance Workshop
PDF
ODA X6-2 family
HIgh Performance Messaging App Development with Oracle Advance Queuing
Best Practices – Extreme Performance with Data Warehousing on Oracle Databa...
Oracle Exadata Performance: Latest Improvements and Less Known Features
RMAN in 12c: The Next Generation (WP)
Oracle Database Appliance X5-2
Oracle Database Appliance Workshop
ODA X6-2 family
Ad

Similar to Best Practices for Oracle Exadata and the Oracle Optimizer (20)

PPTX
Part2 Best Practices for Managing Optimizer Statistics
PPTX
Presentación Oracle Database Migración consideraciones 10g/11g/12c
PPTX
Oracle Query Optimizer - An Introduction
PDF
Improve speed & performance of informix 11.xx part 1
PPTX
Beginners guide to_optimizer
PDF
How to analyze and tune sql queries for better performance
PPTX
Oracle Data Redaction
PDF
Machine Learning and AI at Oracle
PPTX
Optimizing Alert Monitoring with Oracle Enterprise Manager
PPTX
05_DP_300T00A_Optimize.pptx
PPTX
New Performance Benchmarks: Apache Impala (incubating) Leads Traditional Anal...
PPTX
Explain the explain_plan
PPTX
MySQL: Know more about open Source Database
PPTX
Unifying your data management with Hadoop
PDF
Nose Dive into Apache Spark ML
PPTX
Whats New on SAP HANA SPS 11 Core Database Capabilities
PPTX
Sql and PL/SQL Best Practices I
PDF
How to Analyze and Tune MySQL Queries for Better Performance
PPTX
Data Redaction - OTN TOUR LA 2015
PDF
Getting optimal performance from oracle e business suite
Part2 Best Practices for Managing Optimizer Statistics
Presentación Oracle Database Migración consideraciones 10g/11g/12c
Oracle Query Optimizer - An Introduction
Improve speed & performance of informix 11.xx part 1
Beginners guide to_optimizer
How to analyze and tune sql queries for better performance
Oracle Data Redaction
Machine Learning and AI at Oracle
Optimizing Alert Monitoring with Oracle Enterprise Manager
05_DP_300T00A_Optimize.pptx
New Performance Benchmarks: Apache Impala (incubating) Leads Traditional Anal...
Explain the explain_plan
MySQL: Know more about open Source Database
Unifying your data management with Hadoop
Nose Dive into Apache Spark ML
Whats New on SAP HANA SPS 11 Core Database Capabilities
Sql and PL/SQL Best Practices I
How to Analyze and Tune MySQL Queries for Better Performance
Data Redaction - OTN TOUR LA 2015
Getting optimal performance from oracle e business suite

More from Edgar Alejandro Villegas (20)

PDF
What's New in Predictive Analytics IBM SPSS - Apr 2016
PDF
Oracle big data discovery 994294
PDF
Actian Ingres10.2 Datasheet
PDF
Actian Matrix Datasheet
PDF
Actian Matrix Whitepaper
PDF
Actian Vector Whitepaper
PDF
Actian DataFlow Whitepaper
PDF
The Four Pillars of Analytics Technology Whitepaper
PDF
SQL in Hadoop To Boldly Go Where no Data Warehouse Has Gone Before
PDF
Realtime analytics with_hadoop
PDF
SQL – The Natural Language for Analysis - Oracle - Whitepaper - 2431343
PDF
Hadoop and Your Enterprise Data Warehouse
PDF
Big Data SurVey - IOUG - 2013 - 594292
PDF
Big Data and Enterprise Data - Oracle -1663869
PDF
Fast and Easy Analytics: - Tableau - Data Base Trends - Dbt06122013slides
PDF
BITGLASS - DATA BREACH DISCOVERY DATASHEET
PDF
Four Pillars of Business Analytics - e-book - Actuate
PDF
Sas hpa-va-bda-exadata-2389280
PDF
Splice machine-bloor-webinar-data-lakes
PDF
Analytics Trends 20145 - Deloitte - us-da-analytics-analytics-trends-2015
What's New in Predictive Analytics IBM SPSS - Apr 2016
Oracle big data discovery 994294
Actian Ingres10.2 Datasheet
Actian Matrix Datasheet
Actian Matrix Whitepaper
Actian Vector Whitepaper
Actian DataFlow Whitepaper
The Four Pillars of Analytics Technology Whitepaper
SQL in Hadoop To Boldly Go Where no Data Warehouse Has Gone Before
Realtime analytics with_hadoop
SQL – The Natural Language for Analysis - Oracle - Whitepaper - 2431343
Hadoop and Your Enterprise Data Warehouse
Big Data SurVey - IOUG - 2013 - 594292
Big Data and Enterprise Data - Oracle -1663869
Fast and Easy Analytics: - Tableau - Data Base Trends - Dbt06122013slides
BITGLASS - DATA BREACH DISCOVERY DATASHEET
Four Pillars of Business Analytics - e-book - Actuate
Sas hpa-va-bda-exadata-2389280
Splice machine-bloor-webinar-data-lakes
Analytics Trends 20145 - Deloitte - us-da-analytics-analytics-trends-2015

Recently uploaded (20)

PDF
REAL ILLUMINATI AGENT IN KAMPALA UGANDA CALL ON+256765750853/0705037305
PDF
Introduction to the R Programming Language
PPTX
Leprosy and NLEP programme community medicine
PPTX
(Ali Hamza) Roll No: (F24-BSCS-1103).pptx
PPTX
Market Analysis -202507- Wind-Solar+Hybrid+Street+Lights+for+the+North+Amer...
PDF
Mega Projects Data Mega Projects Data
PDF
[EN] Industrial Machine Downtime Prediction
PDF
annual-report-2024-2025 original latest.
PDF
Galatica Smart Energy Infrastructure Startup Pitch Deck
PPTX
iec ppt-1 pptx icmr ppt on rehabilitation.pptx
PPT
Predictive modeling basics in data cleaning process
PPTX
Topic 5 Presentation 5 Lesson 5 Corporate Fin
PDF
Business Analytics and business intelligence.pdf
PDF
Optimise Shopper Experiences with a Strong Data Estate.pdf
PPTX
Database Infoormation System (DBIS).pptx
PDF
Data Engineering Interview Questions & Answers Batch Processing (Spark, Hadoo...
PPTX
QUANTUM_COMPUTING_AND_ITS_POTENTIAL_APPLICATIONS[2].pptx
PPTX
Acceptance and paychological effects of mandatory extra coach I classes.pptx
PPTX
CEE 2 REPORT G7.pptxbdbshjdgsgjgsjfiuhsd
PPTX
modul_python (1).pptx for professional and student
REAL ILLUMINATI AGENT IN KAMPALA UGANDA CALL ON+256765750853/0705037305
Introduction to the R Programming Language
Leprosy and NLEP programme community medicine
(Ali Hamza) Roll No: (F24-BSCS-1103).pptx
Market Analysis -202507- Wind-Solar+Hybrid+Street+Lights+for+the+North+Amer...
Mega Projects Data Mega Projects Data
[EN] Industrial Machine Downtime Prediction
annual-report-2024-2025 original latest.
Galatica Smart Energy Infrastructure Startup Pitch Deck
iec ppt-1 pptx icmr ppt on rehabilitation.pptx
Predictive modeling basics in data cleaning process
Topic 5 Presentation 5 Lesson 5 Corporate Fin
Business Analytics and business intelligence.pdf
Optimise Shopper Experiences with a Strong Data Estate.pdf
Database Infoormation System (DBIS).pptx
Data Engineering Interview Questions & Answers Batch Processing (Spark, Hadoo...
QUANTUM_COMPUTING_AND_ITS_POTENTIAL_APPLICATIONS[2].pptx
Acceptance and paychological effects of mandatory extra coach I classes.pptx
CEE 2 REPORT G7.pptxbdbshjdgsgjgsjfiuhsd
modul_python (1).pptx for professional and student

Best Practices for Oracle Exadata and the Oracle Optimizer

  • 1. 1 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Best Practices for Oracle Exadata and the Oracle Optimizer Maria Colgan, Product Manager, Oracle Optimizer Levi Norman, Product Marketing Director, Oracle Exadata
  • 2. 2 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. • Fastest Data Warehouse & OLTP • Best Cost/Performance Data Warehouse & OLTP • Optimized Hardware • Software Breakthroughs • Scales from ¼ Rack to 8 Full Racks Oracle Exadata Database Machine Extreme performance. Lowest cost.
  • 3. 3 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Hybrid Columnar Compression Smart Flash Cache Smart Scan Queries Up to 50X10X + ++ Oracle Exadata Innovation Storage Server Software
  • 4. 4 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Standardized and Simple to Deploy Delivered Ready-to-Run • Oracle Exadata Database Machines Are The Same Thoroughly Tested & Highly Supportable Identical Configuration Used by Oracle Engineering • Run Existing OLTP and DW Applications 30 Years of Oracle DB Capabilities No Exadata Certification Required • Leverage Oracle Ecosystem Skills, Knowledge Base, People, & Partners
  • 5. 5 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Oracle Exadata in the Market Rapid Adoption Across Geographies and Industries
  • 6. 6 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Agenda • How to gather statistics • Additional types of statistics • When to gather statistics • Statistics gathering performance
  • 7. 7 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics • Analyze command is deprecated – Only good for row chaining • The GATHER_*_STATS procedures take 13 parameters – Ideally you should only set the first 2-3 parameters • SCHEMA NAME • TABLE NAME • PARTITION NAME Use DBMS_STATS Package
  • 8. 8 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics Use DBMS_STATS Package • Your gather statistics commands should be this simple
  • 9. 9 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics • Can change the default value at the global level – DBMS_STATS.SET_GLOBAL_PREF – This changes the value for all existing objects and any new objects • Can change the default value at the table level – DBMS_STATS.SET_TABLE_PREF Changing Default Parameter Values for Gathering Statistics
  • 10. 10 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics • CASCADE • CONCURRENT • DEGREE • ESTIMATE_PERCENT • METHOD_OPT • NO_INVALIDATE • GRANULARITY • PUBLISH • INCREMENTAL • STALE_PERCENT • AUTOSTATS_TARGET (SET_GLOBAL_PREFS only) Changing Default Parameter Values for Gathering Statistics •The following parameter defaults can be changed:
  • 11. 11 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics • # 1 most commonly asked question – “What sample size should I use?” • Controlled by ESTIMATE_PRECENT parameter • From 11g onwards use default value AUTO_SAMPLE_SIZE – New hash based algorithm – Speed of a 10% sample – Accuracy of 100% sample Sample Size
  • 12. 12 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. How to Gather Statistics • Speed of a 10% sample • Accuracy of 100% sample Sample Size Run Num AUTO_SAMPLE_SIZE 10% SAMPLE 100% SAMPLE 1 00:02:21.86 00:02:31.56 00:08:24.10 2 00:02:38.11 00:02:49.49 00:07:38.25 3 00:02:39.31 00:02:38.55 00:07:37.83 Column Name NDV with AUTO_SAMPLE_SIZE NDV with 10% SAMPLE NDV with 100% SAMPLE C1 59852 31464 60351 C2 1270912 608544 1289760 C3 768384 359424 777942
  • 13. 13 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Agenda • How to gather statistics • Additional types of statistics • When to gather statistics • Statistics gathering performance
  • 14. 14 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Additional Types of Statistics • Two types of Extended Statistics – Column groups statistics • Column group statistics useful when multiple column from the same table are used in where clause predicates – Expression statistics • Expression statistics useful when a column is used as part of a complex expression in where clause predicate • Can be manually or automatically created • Automatically maintained when statistics are gathered When Table and Column Statistics are not enough
  • 15. 15 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics – SELECT * FROM vehicles WHERE model = ‘530xi’ AND color = 'RED’; Column Group Statistics SLIVERC320MERC REDSLKMERC RED911PORSCHE SILVER530xiBMW BLACK530xiBMW RED530xiBMW ColorModelMake Vehicles Table Cardinality #ROWS * 1 * 1 12 * 1 * 1 1 NDV c1 NDV c2 4 3 = => MAKE MODEL COLOR BMW 530xi RED =
  • 16. 16 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics SELECT * FROM vehicles WHERE model = ‘530xi’ AND make = ‘BMW’; Column Group Statistics SLIVERC320MERC REDSLKMERC RED911PORSCHE SILVER530xiBMW BLACK530xiBMW RED530xiBMW ColorModelMake Vehicles Table Cardinality #ROWS * 1 * 1 12 * 1 * 1 1 NDV c1 NDV c2 4 3 = => = MAKE MODEL COLOR BMW 530xi RED BMW 530xi BLACK BMW 530xi SLIVER
  • 17. 17 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics • Create extended statistics on the Model & Make columns using DBMS_STATS.CREATE_EXTENDED_STATS Column Group Statistics New Column with system generated name
  • 18. 18 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics SELECT * FROM vehicles WHERE model = ‘530xi’ AND make = ‘BMW’; Column Group Statistics SLIVERC320MERC REDSLKMERC RED911PORSCHE SILVER530xiBMW BLACK530xiBMW RED530xiBMW ColorModelMake Vehicles Table Cardinality calculated using column group statistics MAKE MODEL COLOR BMW 530xi RED BMW 530xi BLACK BMW 530xi SLIVER
  • 19. 19 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics SELECT * FROM Customers WHERE UPPER(CUST_LAST_NAME) = ‘SMITH’; • Optimizer doesn’t know how function affects values in the column • Optimizer guesses the cardinality to be 1% of rows SELECT count(*) FROM customers; COUNT(*) 55500 Expression Statistics Cardinality estimate is 1% of the rows
  • 20. 20 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics Expression Statistics New Column with system generated name
  • 21. 21 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics 1. Start column group usage capture Automatic Column Group Detection • Oracle can automatically detect column group candidates based on an STS or by monitoring a workload • Uses DBMS_STATS procedure SEED_COL_USAGE • If the first two arguments are set to NULL the current workload will be monitored • The third argument is the time limit in seconds
  • 22. 22 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics 2. Run your workload Automatic Column Group Detection • Actual number of rows returned by this query is 932 • Optimizer under-estimates the cardinality as it assumes each where clause predicate will reduce number of rows returned • Optimizer is not aware of real-world relations between city, state, & country
  • 23. 23 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics 2. Run your workload Automatic Column Group Detection • Actual number of rows returned by this query is 145 • Optimizer over-estimates the cardinality as it is not aware of the real-world relations between state & country
  • 24. 24 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Extended Statistics 3. Check column usage information recorded for our table Automatic Column Group Detection COLUMN USAGE REPORT FOR SH.CUSTOMERS 1. COUNTRY_ID : EQ 2. CUST_CITY : EQ 3. CUST_STATE_PROVINCE : EQ 4. (CUST_CITY, CUST_STATE_PROVINCE, COUNTRY_ID) : FILTER 5. (CUST_STATE_PROVINCE, COUNTRY_ID) : GROUP_BY SELECT dbms_stats.report_col_usage(user, 'customers') FROM dual; EQ means column was used in equality predicate in query 1 GROUP_BY columns used in group by expression in query 2 FILTER means columns used together as filter predicates rather than join etc. Comes from query 1
  • 25. 25 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Enhancements 4. Create extended stats for customers based on usage EXTENSIONS FOR SH.CUSTOMERS 1. (CUST_CITY, CUST_STATE_PROVINCE, COUNTRY_ID): SYS_STUMZ$C3AIHLPBROI#SKA58H_N created 2. (CUST_STATE_PROVINCE, COUNTRY_ID) : SYS_STU#S#WF25Z#QAHIHE#MOFFMM_ created Column group statistics will now be automatically maintained every time you gather statistics on this table Automatic Column Group Detection SELECT dbms_stats.create_extended_stats(user, 'customers') FROM dual;
  • 26. 26 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Agenda • How to gather statistics • Additional types of statistics • When to gather statistics • Statistics gathering performance
  • 27. 27 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. When to Gather Statistics • Oracle automatically collect statistics for all database objects, which are missing or have stale statistics • AutoTask run during a predefined maintenance window • Internally prioritizes the database objects – Both user schema and dictionary tables – Objects that need updated statistics most are processed first • Controlled by DBMS_AUTO_TASK_ADMIN package or via Enterprise Manager Automatic Statistics Gathering
  • 28. 28 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. When to Gather Statistics Automatic Statistics Gathering in Enterprise Manager • Enterprise Manager allows you to control all aspects of the automatic statistics gathering task • The statistics gathering task can be set to only run during certain maintenance windows
  • 29. 29 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. When to Gather Statistics • If you want to disable auto job for application schema leaving it on for Oracle dictionary tables • The scope of the auto job is controlled by the global preference AUTOSTATS_TARGET • Possible values are – AUTO Oracle decides what tables need statistics (Default) – All Statistics gathered for all tables in the system – ORACLE Statistics gathered for only the dictionary tables Automatic Statistics Gathering
  • 30. 30 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. When to Gather Statistics • Need to determine when to manually gather statistics • After large data loads – Add statistics gather to the ETL or ELT process • If trickle loading or online transactions – Manually determine when statistics are stale and trigger gather – USER_TAB_MODIFICATIONS lists # INSERTS, UPDATES, and DELETES that occurs on each table • If trickle loading into a partition table – Used dbms.stats.copy_table_stats() If the Auto Statistics Gather Job is not suitable
  • 31. 31 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. When to Gather Statistics If the Auto Statistics Gather Job is not suitable Partitioned Table Partition 1 June 1st 2012 : Partition 4 June 4th 2012 Partition 5 June 5th 2012 DBMS_STATS.COPY_TABLE_STATS(); • Copies statistic from source partition to new partition • Adjusts min & max values for partition column • Both partition & global statistics • Copies statistics of the dependent objects • Columns, local (partitioned) indexes* etc. • Does not update global indexes
  • 32. 32 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Agenda • How to gather statistics • Additional types of statistics • When to gather statistics • Statistics gathering performance
  • 33. 33 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance • Three parallel options to speed up statistics gathering – Inter object using parallel execution – Intra object using concurrency – The combination of Inter and Intra object • Incremental statistics gathering for partitioned tables How to speed up statistics gathering
  • 34. 34 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance • Controlled by GATHER_*_STATS parameter DEGREE • Default is to use parallel degree specified on object • If set to AUTO Oracle decide parallel degree used • Works on one object at a time Inter Object using parallel execution
  • 35. 35 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance Inter Object using parallel execution P4 P3 P2 P1 Customers Table • Customers table has a degree of parallelism of 4 • 4 parallel server processes will be used to gather stats
  • 36. 36 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance Inter Object using parallel execution Exec DBMS_STATS.GATHER_TABLE_STATS(‘SH’,’SALES); Sales Table Partition 1 May 18th 2012 Partition 2 May 19th 2012 Partition 3 May 20th 2012 • Each individual partition will have statistics gathered one after the other • The statistics gather procedure on each individual partition operates in parallel BUT the statistics gathering procedures won’t happen concurrently P4 P3 P2 P1
  • 37. 37 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance • Gather statistics on multiple objects at the same time • Controlled by DBMS_STATS preference, CONCURRENT • Uses Database Scheduler and Advanced Queuing • Number of concurrent gather operations controlled by job_queue_processes parameter • Each gather operation can still operate in parallel Intra Object
  • 38. 38 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance Intra Object Statistics Gathering for SH Schema Exec DBMS_STATS.GATHER_SCHEMA_STATS(‘SH’); • A statistics gathering job is created for each table and partition in the schema • Level 1 contain statistics gathering jobs for all non- partitioned tables and a coordinating job for each partitioned table • Level 2 contain statistics gathering jobs for each partition in the partitioned tables
  • 39. 39 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance Inter Object using concurrent parallel execution Exec DBMS_STATS.GATHER_TABLE_STATS(‘SH’,’SALES); Sales Table Partition 1 May 18th 2012 Partition 2 May 19th 2012 Partition 3 May 20th 2012 Job1 Job2 Job3 • The number of concurrent gathers is controlled by the parameter job_queue_processes • In this example it is set to 3 • Remember each concurrent gather operates in parallel • In this example parallel degree is 4
  • 40. 40 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Statistics Gathering Performance • Typically gathering statistics after a bulk loading data into one partition would causes a full scan of all partitions to gather global table statistics – Extremely time consuming • With Incremental Statistic gather statistics for touched partition(s) ONLY – Table (global) statistics are accurately built from partition statistics – Reduce statistics gathering time considerably – Controlled by INCREMENTAL preference Incremental Statistics Gathering for Partitioned tables
  • 41. 41 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Incremental Statistics Gathering Sales Table May 22nd 2011 May 23rd 2011 May 18th 2011 May 19th 2011 May 20th 2011 May 21st 2011 Sysaux Tablespace 1. Partition level stats are gathered & synopsis created 2. Global stats generated by aggregating partition level statistics and synopsis
  • 42. 42 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Incremental Statistics Gathering Sales Table May 22nd 2011 May 23rd 2011 May 18th 2011 May 19th 2011 May 20th 2011 May 21st 2011 Sysaux Tablespace May 24th 2011 4. Gather partition statistics for new partition 5. Retrieve synopsis for each of the other partitions from Sysaux 6. Global stats generated by aggregating the original partition synopsis with the new one 3. A new partition is added to the table & Data is Loaded
  • 43. 43 Copyright © 2011, Oracle and/or its affiliates. All rights reserved. More Information • Accompanying Two Part White Paper Series – Understanding Optimizer Statistics – Best Practices for Managing Optimizer Statistics • Optimizer Blog – http://blogs.oracle.com/optimizer • Oracle.com – http://www.oracle.com/technetwork/database/focus-areas/bi- datawarehousing/dbbi-tech-info-optmztn-092214.html • Oracle Exadata Database Machine – http://www.oracle.com/exadata
  • 44. 44 Copyright © 2011, Oracle and/or its affiliates. All rights reserved.