1 chapter 14 dml tuning. 2 dml performance fundamentals dml performance is affected by: –...

16
1 Chapter 14 DML Tuning

Upload: rosamond-gaines

Post on 02-Jan-2016

216 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

1

Chapter 14DML Tuning

Page 2: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

2

DML Performance Fundamentals

DML Performance is affected by:– Efficiency of WHERE clause– Amount of index maintenance– Referential integrity overhead– The overhead of using triggers

Page 3: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

3

Index Overhead

Indexes help SELECT performance Indexes affect DML performance

– Indexes are updated with DML operations– Important to keep only needed and used indexes– Use care creating indexes on frequently updated

columns– DELETE overhead on indexes usually higher than

the delete of the data itself

Page 4: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

4

Trigger Overhead

Triggers are PL/SQL blocks that execute when specified DML operations occur

Example of trigger affecting DML on the SALES table:– Used to derive a column value– On INSERT or UPDATE statement, calculates UNIT_PRICE as part

of DML operation:CREATE TRIGGER sales_iu_trg BEFORE INSERT OR UPDATE ON SALES FOR EACH ROW WHEN (new.quantity_sold > 0)BEGIN :new.unit_price := :new.amount_sold/:new.quantity_cold;END;

In Oracle 11g, virtual columns can perform same functionality without trigger overhead

Page 5: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

5

Referential Integrity

Ensures data integrity Performance impacts with INSERTs and

UPDATEs Slows down DML processing

– Checks needed to ensure data integrity is maintained

– Foreign keys created between tables to ensure this integrity

Page 6: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

6

INSERT Optimization

Array Processing– Especially valuable for INSERT statements– Improves bulk insert performance

Direct Path Inserts– Conventional Path

uses existing blocks with space for new rows Blocks processed in the buffer cache

– Direct Path Writes new rows using new blocks directly to database files on disk Bypasses buffer cache Minimal redo log entries generated Reduces overhead of buffer cache management Invoked by APPEND hint and with SQL Loader If disk IO is system bottleneck, can actually be slower

Page 7: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

7

Multi-Table Inserts

Efficient if source table contains data to be applied to multiple target tables

INSERT ALL

WHEN region = ‘EMEA’ THEN INTO sales_emea

(PROD_ID, CUST_ID, TIME_ID, CHANNEL_ID, PROMO_ID,

QUANTITY_SOLD, AMOUNT_SOLD)

VALUES (PROD_ID, CUST_ID, TIME_ID, CHANNEL_ID, PROMO_ID,

QUANTITY_SOLD, AMOUNT_SOLD)

WHEN region = ‘US’ THEN INTO sales_us

(PROD_ID, CUST_ID, TIME_ID, CHANNEL_ID, PROMO_ID,

QUANTITY_SOLD, AMOUNT_SOLD)

VALUES (PROD_ID, CUST_ID, TIME_ID, CHANNEL_ID, PROMO_ID,

QUANTITY_SOLD, AMOUNT_SOLD)

SELECT * FROM sales_updates;

Page 8: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

8

Delete Operations

Delete is single most expensive operation– Needs to find row to be deleted– Removed row from data block– Update all indexes that reference the row– Checking referential integrity constraints– Processing related triggers– Creating UNDO entries for all of the above

Page 9: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

9

Truncate

Used to efficiently delete all rows from a table Resets table high water mark Improves subsequent full table scans Is a DDL operation, not a DML operation Cannot be rolled back Should be used over DELETE when removing all

rows from a table

Page 10: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

10

Partitions

Can perform table-level operations at the partition-level– Can drop partitions to delete data– Can truncate partitions to delete data

Use range or interval partitioning on date columns for data to be purged

Page 11: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

11

Create Table as Select

Can be used instead of delete if large number of rows need deletion

Especially effective with the following clauses– NOLOGGING– PARALLEL

Can be done using direct-path insert mode

Page 12: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

12

Update and Merge Operations

UPDATE changed values to existing rows– Correlated updates

Use Join technique over correlated updates

MERGE– Updates rows if they exist– Inserts new rows where there is no match– More efficient that separate UPDATE and INSERT

statements

Page 13: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

13

COMMIT Optimization

COMMIT involves disk IO– More frequent COMMIT means more disk IO

COMMIT– Usually driven by application design– Not by performance considerations– Data integrity more important than performance

For bulk updates, COMMIT infrequently

Page 14: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

14

Batch and NOWAIT COMMIT

By default, COMMIT– Writes redo log entries to disk– Ensures recoverability and ACID qualities– Returns control to application after redo IO complete

This can be modified for performance– COMMIT NOWAIT returns control to application

immediately– Redo IO occurs in background– Raises possibility that Redo IO could fail unnoticed

Page 15: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

15

NOLOGGING

Reduces most redo log overhead incurred by DML Compromises recoverability Use NOLOGGING for tables that contain

– Short term data– Non-critical data

Use NOLOGGING in these operations– Create table as select– Create index– Direct path insert

Append hint SQL Loader

Page 16: 1 Chapter 14 DML Tuning. 2 DML Performance Fundamentals DML Performance is affected by: – Efficiency of WHERE clause – Amount of index maintenance – Referential

16

Batch and NOWAIT COMMIT (cont.)

This can be modified for performance (cont.)– COMMIT BATCH means

Redo IO occurs “later” Reduced redo IO rate Opens chance that committed transaction not written to disk

– Oracle 11 parameters can be set for all transactions COMMIT_LOGGING=BATCH COMMIT_WAIT=NOWAIT

– Oracle 11g has single parameter COMMIT_WRITE={WAIT,NOWAIT,BATCH,IMMEDIATE}

– See table 14-1 p. 455