Preventing Bad SQLs in the Cloud - Proligence

0 downloads 117 Views 1MB Size Report
Non-database developers doing database coding ... Nested Loop to Hash Join. Preventing Bad SQLs in the Cloud. 9 ... Code
Preventing Bad SQLs in the Cloud Arup Nanda

Longtime Oracle DBA @ArupNanda

Preventing Bad SQLs in the Cloud

1

@ArupNanda

Preventing Bad SQLs in the Cloud

2

@ArupNanda

Preventing Bad SQLs in the Cloud

3

DBA Developer should have taken care of this.

@ArupNanda

Developer Why isn’t the DBA aware of this problem?

Preventing Bad SQLs in the Cloud

Manager DBA will review all queries and approve them. 4

DevOps • Changes happening constantly • Non-database developers doing database coding – Row-by-row processing instead of bulk.

@ArupNanda

Preventing Bad SQLs in the Cloud

5

And here comes the Cloud • Latency (row-by-row) • You don’t have SYSDBA access • You are probably not even a DBA.

@ArupNanda

Preventing Bad SQLs in the Cloud

6

Why Good SQLs Go Bad … • Missing, Incomplete or Inaccurate Statistics • Improper or Lack of Indexing • Bad Syntax – WHERE COL1+20 = COL2 – WHERE UPPER(COL1) = ‘XYZ’

@ArupNanda

Preventing Bad SQLs in the Cloud

7

Why Good SQLs Go Bad • High Demand for Data Buffers • Bind peeking • Upgrades, patches.

@ArupNanda

Preventing Bad SQLs in the Cloud

8

Solutions … • Adding or Correcting Indexing

– Index Absent – Proper Index- B-tree? Bitmap? Unique?

• Rewriting the SQL

– e.g. col1+10=:v1 becomes col1=:v1-10 – Nested Loop to Hash Join

@ArupNanda

Preventing Bad SQLs in the Cloud

9

Solutions • Reduce I/O

– Materialized Views – Partitioning

• Collect Accurate Statistics • Put Hints • Create Outlines. @ArupNanda

Preventing Bad SQLs in the Cloud

10

Challenges …

• Tough to determine why plans go bad, at least quickly • Requires development skills – Not typical DBA skills

• Volume of statements to tune • Time – Almost always reactive – Do it now. Under pressure!

@ArupNanda

Preventing Bad SQLs in the Cloud

11

Challenges • Not in the loop for application deployment • Code can’t be changed, i.e. no hints • Lack of Testing – Time – Resources

• DevOps

@ArupNanda

Preventing Bad SQLs in the Cloud

12

SQL Profile Hints are automatically added to queries Gives more information about the accessed objects, data, etc.

@ArupNanda

Preventing Bad SQLs in the Cloud

13