From: Helma on
I now work at a shop where the developers over the years have added
many (random) indexes on the database, and (still) having problems
with performance. I see many sql-statements coming by that use
suboptimal indexes, I think it would be a good idea to mass-review the
sql and indexes, increasing the quality of the indexes and reduce the
'overindexing' of the DB. Seniors! I assume you have encountered this
situation before. How to efficiently deal with such situation?

Oracle 10g
From: John Hurley on
helma;

> I now work at a shop where the developers over the years have added
> many (random) indexes on the database, and (still) having problems
> with performance. I see many sql-statements coming by that use
> suboptimal indexes, I think it would be a good idea to mass-review the
> sql and indexes, increasing the quality of the indexes and reduce the
> 'overindexing' of the DB. Seniors! I assume you have encountered this
> situation before. How to efficiently deal with such situation?

Well it is a divide and conquer strategy type of plan that probably
will work best. Not quite sure what you mean by "mass-review".

I would probably start by looking at the top 5 or 10 tables and/or
indexes ( by gets and/or by reads ) and seeing what falls out of the
trees. If you are licensed for AWR stuff the reporting makes it
pretty obvious where you will get the best bang for your buck.

Finding some examples and case studies where you document some
improvements ... how and why ... what gain it gives to your business
by fixing the design ... is one way to go.

It can get exhausting mentally if you are in this battle by yourself.
It can get to be fun if you can get some buyin from the developers and
as their knowledge base increases if they start to suggest changes
themselves.

Ultimately there is no one size way of efficiently reviewing
everything nor is it going to be cost effective.
From: Mark D Powell on
On Jun 2, 8:49 am, Helma <helma.vi...(a)hotmail.com> wrote:
> I now work at a shop where the developers over the years have added
> many (random) indexes on the database, and (still) having problems
> with performance. I see many sql-statements coming by that use
> suboptimal indexes, I think it would be a good idea to mass-review the
> sql and indexes, increasing the quality of the indexes and reduce the
> 'overindexing' of the DB. Seniors! I assume you have encountered this
> situation before. How to efficiently deal with such situation?
>
> Oracle 10g

Rather than mass review indexes I think I would use Statspack or AWR
(if Licensed and 10g+) reports to find heavy hitter SQL and/or trace
critical processes and attach any performance issues I found in those.

Monitoring is on by default in 10g so I would look for indexes that do
not appear to be used and potentially drop those to free up space and
eliminate the need to maintain them.

The idea of performing a mass reivew seems like it would be largely a
waste of DBA time; however, I am not totally against the idea as it
may be the only way to find and eliminate garbage but first I would
want to attack real problems. To do that you have to identify
specific problems and Oracle provides tools to do just that.

HTH -- Mark D Powell --


From: phil_herring on
I find that looking at tables and indexes on their own doesn't help
much; really what you want to look at is the SQL running against the
DB. One simple approach involves looking at the SGA stats for the DB
after it's been up for a while (at least a few weeks), and identifying
the SQL that has the highest total elapsed time. Pick off the top 5,
work on those, put the changes in, clear the stats, and repeat.
However, you have to be sensible; some SQL just takes a long time to
run and may not need tuning. Batch jobs often fall into this category.

If you're lazy, TOAD has a built-in report that will help you do
exactly this.

-- Phil
From: galen_boyer on
Helma <helma.vinke(a)hotmail.com> writes:

> I now work at a shop where the developers over the years have added
> many (random) indexes on the database, and (still) having problems
> with performance. I see many sql-statements coming by that use
> suboptimal indexes, I think it would be a good idea to mass-review the
> sql and indexes, increasing the quality of the indexes and reduce the
> 'overindexing' of the DB. Seniors! I assume you have encountered this
> situation before. How to efficiently deal with such situation?

At the end of the day, what is "over-indexing" a database? If you don't
see a slowdown because of the indexes, it sounds like you should be fine
there. So what if an index isn't used or one index would solve what 5
indexes are currently solving. If something is hitting you because of
too many indexes, then indentify those indexes and fix that problem.
Other than that, start putting good practices going forward and keep a
look out for problems caused by over-indexing.

--
Galen Boyer

--- news://freenews.netfront.net/ - complaints: news(a)netfront.net ---