Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: "enq: TX - index contention" wait during RAC Benchmark ?

Re: "enq: TX - index contention" wait during RAC Benchmark ?

From: Greg Rahn <greg_at_structureddata.org>
Date: Wed, 28 Feb 2007 13:17:51 -0800
Message-ID: <45E5F17F.2060503@structureddata.org>


Based on the symptoms presented it sounds like you may have right growing index leaf block contention. This is generally the result of using an increasing sequence for a primary key. A right growing index will prevent your application from scaling in a single instance database, let alone a clustered database (RAC) environment where its impact on scaling is exacerbated.

To speak to your questions:
Q2: There are two sections in the AWR report - "Segments by Buffer Busy Waits" and "Segments by Global Cache Buffer Busy Waits". This will probably have the index in question listed.

The ASH report should also contain this info as well. $ORACLE_HOME/rdbms/admin/ashrpt.sql
Alternatively you can look at v$active_session_history.

Q1: As I first mentioned, index contention is generally the result of bad application design and/or implementation. As an performance engineer, I would suggest to fix the application by altering its design or implementation. This may be a app code change or a combination app/database design change.

If the issue is as "simple" as the sequence issue mentioned above, the solution could be as "easy" as making two sequences - and creating a node affinity with them. Make one an increasing sequence starting at 1, and the other a decreasing sequence starting at 999999999999 (or other large number such that the keys will not collide). This will accomplish two things: 1) eliminate the right growing index contention, and 2) create an affinity of the index leaf block nodes such that there should be no "sharing" of blocks - one node will insert on the left half of the tree, and the other the right.

An alternative implementation would be to append the inst_id to the key in the application and use the same sequence. It will have the same effect. (This would also assume there is a node affinity at the application layer).

Having done many a benchmark myself, I would also suggest to analyze your benchmark implementation. Often times I have seen similar "keys" issues be a result of Loadrunner or other driver using a incremental counter for input into the application. This essentially has the same result as the sequence issue, but is caused by the data input, not by the application directly. Be mindful of creating such situations with synthetic benchmarks.

Regards,

Greg Rahn
http://structureddata.org

--
http://www.freelists.org/webpage/oracle-l
Received on Wed Feb 28 2007 - 15:17:51 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US