Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Mailing Lists -> Oracle-L -> Re: "Throttling" a session's IO

Re: "Throttling" a session's IO

From: Hemant K Chitale <>
Date: Tue, 03 Apr 2007 21:40:52 +0800
Message-Id: <>

Thanks for the suggestions. However,

  1. I am running 9i which , by default, does a TRUNCATE instead of a DELETE. In fact, the users cannot afford the TRUNCATE (because there would be 0 rows in the MView when it is being refreshed). So, I do a grouped refresh (which used DELETE) to ensure that there ARE always rows in the MV.
  2. I have seen Gints Plivina's method. That is appropriate in Query rewite situations. However, we don't use Query Rewrite. When users (the application) specifically needs the data that is present in the MView, the query explicitly names the MView -- something like using the Mview as it was originally designed -- a Snapshot. Moreover, the method described there still creates the same (actually a higher load because of the drop and create index -- which I don't need to do because I am not relying on statistics and QR).
  3. The method of creating two different MViews described by Steven would probably work, provided that I use TRUNCATE (ie a non-grouped Refresh). That is one of the methods I had in mind when I stated "split up into separate MViews "
    redesign the query and application to fetch different subsets of data into different Mviews)

The reason why I raised "Throttling" a session's IO is not because of the Mview.
The Mview problem is a real example that I have where one session (or a small group of sessions) can tip a system over the threshold {actually "sar" shows very
low CPU and 25% wio but the issue is that the application is so very sensitive to query response time -- it is not a human being at the other end but a piece of equipment that knows only rigid thresholds !).

We have actually rewritten the MView and also reduced the scope of the data it fetches so that it runs in 4min to 5.5min instead of the earlier 20min to 25min.
It might still come back as a pain-point 6 months from now.

But , this specific MView is an example of a problem for which I am looking for a solution. In a CPU-starved system you can still make use of "nice" and "renice"
{NOT on the Oracle Background processes} on QUERY sessions {probably not for Transactions which you'd have to be more careful with} to limit CPU usage or provide more CPU to a specific session..

How do you control a session's IO rate ?

(like I said if it was a custom PLSQL, I could re-write it to "sleep"
between every batch of so many records).

Hemant K Chitale

Received on Tue Apr 03 2007 - 08:40:52 CDT

Original text of this message