|
Current Oracle Myths
The current Oracle myth debates are largely a result of the changing Oracle technology and the inability of some Oracle professionals to adapt to the changes.
Current Myth: Indexes and tables do not need to be separated
This myth arose because of recommendations by Oracle back in the early 1990’s when disk contention was a major issue and the "separation" myth is misunderstood.
It wasn't too long ago that separation of indexes and tables in databases was a good and accepted method for improving performance.
Of course this was because otherwise they would be on the same disk platter if they weren't separate and would conflict. Moving indexes to a tablespace on a separate disk from tables always improved performance, not just the separation into a separate tablespace.
The main argument, supported by 10046 traces with a single-user system is that access to tables and indexes in a single query is not asynchronous in nature, but is rather a linear process. However, even in single user systems this fails to take into consideration the required head movement and disk latencies associated with reading index, then table. IN a multi-user environment it fails to take into consideration all of the above plus the effects of multi-user access against co-located tables and indexes.
Now with properly laid-out RAID much of the contention issues of co-location are removed or mitigated, however, maintenance is still made easier with separation into several tablespaces for tables and indexes. Separation into discrete tablespaces allows tracking of IO rates and volumes for specific objects or types of objects and also allows for use of multiple-block sizes.
Current Myth: High-update tables and indexes rarely need reorganization
This myth was started by the statements of Oracle experts that claimed that Oracle indexes always remain balanced and that indexes rarely benefit from rebuilding. Below we see the suggestion that, somehow, understanding “why” table and indexes become fragmented might help:
unless you want to be caught in the infinite loop of org, reorg, org, reorg.... You better have a clue as to "why"
While in a perfect world you could rebuild once using the absolute correct parameters and never have to rebuild again, I am afraid this doesn’t happen in the real world. It’s rather like expecting to clean your house once when it is full of rowdy teenagers, it just doesn’t make sense.
Today, it is well-understood that tables and indexes with high concurrent insert, update and delete activity system can quickly get a sub-optimal structure and require reorganization to reduce I/O for multi-block scan operations (using Oracle’s dbms_redefinition package, alter index move/rebuild, alter index coalesce, or even alter table move depending on availability requirements.) The concept of index balance is two-pronged, while a B-Tree is always height balanced, it can become sparse or right-handed, so it becomes width or load unbalanced.
Current Myth: Multiple blocksizes don’t improve performance
This myth was perpetuated because multiple blocksizes were originally designed to support transportable tablespaces and some people could not see the other important side-benefits of multiple blocksizes. The chief benefit of different blocksizes is the more efficient use of limited RAM regions (db_cache_size, db_32k_cache_size, etc.) and the intelligent segregation of objects to reduce logical I/O (consistent gets) for multi-block scan reads.
Today, Metalink notes that the multiple blocksize parameters are among the most important in Oracle tuning, and noted experts such as Robin Schumacher has demonstrated that Oracle indexes will build more-optimal b-tree structures within a large blocksize. Also, Reorganizing a high-DML index, or using small blocksizes for random single-row fetches (index access unique) of small rows can reduce the size in db_cache_size and therefore reduce PIO because more blocks fit into the cache area.
For example, some attempt to prove the assertion using small, artificial single-user experiments and suggest that multiple blocksizes are unlikely to help in a real-world database. However, real-world shops report a very different experience with multiple blocksizes and a 32k blocksize for indexes:
"My favorite recent article was on 32KB indexes - our client (200GB+) saw a 20% reduction in I/O from this simple change... “- Steve Taylor, Technical Services Manager EMEA
So, here we see how changing technology can convert a perfectly-valid approach from 15 years ago into a “Myth”, and reaching a false conclusion from a single-user test-script can create a modern myth, again because of changing technology. |
|