Skip to Main Content
  • Questions
  • how to improve the SQL performance of an 8 node Exadata Data Warehouse RAC

Breadcrumb

Question and Answer

Connor McDonald

Thanks for the question.

Asked: October 13, 2016 - 2:20 am UTC

Last updated: October 13, 2016 - 9:13 am UTC

Version: 11.2.0.3.0

Viewed 1000+ times

You Asked

Hi Tom!
Last day I work with an 8 node Exadata Data Warehouse to tune performance for the slow SQL,and I found that the table is not gather statistics and the execution plan is not the best, it executes with the TABLE ACCESS STORAGE FULL,the table has about 50 milion rows and there are no any indexes were created on the table.
But I heard that the Data Warehouse no need to create any indexes on table,and statistics is not gathered.I'm so confused and I don't know how to tune the SQL if they don't gather the statistics or create index.I am very helpless and doubt, what I should do to tune the SQL in the Exadata Data Warehouse? And why they no need to gather statistics or create index?
Hope for your responseļ¼
Thanks a lot!

Best wishes!

and Connor said...

"But I heard that the Data Warehouse no need to create any indexes"...
- that is false

"and statistics is not gathered"
- that is also false

This is one of those things that is common in the IT industry. Someone says

"With an Exadata, there is a good chance that many of your indexes are redundant for DSS style queries"

and that is true. The problem is, someone takes that sentence and turns it into:

"Drop ALL of your indexes on Exadata"

which is definitely NOT true.

But onto the issue at hand - how to tune SQL on Exadata.

Just like *any* platform, your aim is to have your SQL take advantage of what works best on that platform. So for exadata, that means taking advantage of compression, predicate offloading, storage indexes, or probably the more common way of looking at it, is making sure your SQL's are not doing things that stop these optimizations from taking place, eg, single row lookup, expressions around columns, case-insensitive queries, buffered reads etc.

Similarly, you also want to tackle the *creation* of data, namely, how its loaded, because that too can have an impact on how efficiently it can be accessed by queries later.


Rating

  (2 ratings)

Is this answer out of date? If it is, please let us know via a Comment

Comments

More details

A reader, October 13, 2016 - 6:16 am UTC

That's to say, I can tune the SQL in the Exadata Data Warehouse like what I do at the other platform? For example,create some needed indexes and gather statistics for tables.
I also refer to some information on the MOS,like this one:Best Practices for a Data Warehouse on Oracle Database 11g(Doc ID 1324685.1),it's the document I can refer to do my tune job?
Or could you advise some helpful documents about how to tune the SQL in the Exadata Data Warehouse or how to improve the Exadata Data Warehouse machines' performance?

Best wishes!
Connor McDonald
October 13, 2016 - 9:13 am UTC

I tend to avoid blanket advice, or rules of thumb when tuning.

Tuning for me is pretty simple:

A- devise hypothesis
B- test hypothesis
C- if results are better, and side-effects are manageble, then implement
D- if results are worse, or side-effects too large..then goto A

I stress the word "hypothesis" as opposed to "guess" :-)

So, there's a good chance that dropping an index *might* make things faster for a particular scenario on Exadata (just as it might be for a non-Exadata platform). But there's just as good a chance, that *adding* an index might be a solution for a different scenario.

Never discount an option just because it doesn't follow a "rule of thumb". Science and measurement trump guidelines.


For thanks!

A reader, October 14, 2016 - 3:09 am UTC

I have already know how to do it.
Thanks for your answer!

Best wishes!