Tuesday, January 22, 2008

Optimizing RAC database performance for SOA dehydration - Part 1

Dehydration store performance has turned out to be one of the biggest challenges in performance-tuning the Oracle SOA Suite for production deployment.  This has been an ongoing exercise over the past year or so, and as such is appropriate as my first post to this blog.  I expect that you will see commentary about RAC performance tuning as an ongoing subject.

The main areas of concern for us have been in High Watermark contention (aka HW contention) and global cache contention, particularly as it relates to index insertions.  Under the default database schema for the BPEL Process Manager, we originally saw a significant portion (on the order of 70-80%) of database wait time consumed by HW contention alone.

We discovered through some investigation that this problem was caused by the use of ASSM (automatic segment storage management), in particular on the cube_scope table's blob data.  By moving the blob storage for this table to a non-assm tablespace we were able to remove an enormous bottleneck in database performance.

Originally thought to be a RAC-specific issue, we have also demonstrated that it can occur in a stand-alone database (our development environment in particular) under conditions of heavy concurrency (lots of bpel processes running at once).

In the near future I will post the revised ddl for the cube_scope table as well as three other tables which can also benefit from this optimization.

No comments: