Java Mailing List Archive

http://www.dba.5341.com/

Home » Home (12/2007) » oracle l »

RE: Slow CREATE BITMAP INDEX and high consistent gets

Christian Antognini

2006-08-22

Replies:

Tim

> Could delayed block cleanout from a massive UPDATE or DELETE be
> causing high LIO? Perhaps someone else can confirm, but I think
> the count for "current" (a.k.a. "db block changes") should be
> pretty high if that were happening. However, it also sounds like
> you've done the CREATE BITMAP INDEX several times, and delayed
> block cleanout probably wouldn't repeat like that.

A couple of comments about that:

* Jeff is experiencing a high number of "query" and not "current".

* "current" are associated to "db block gets" and not "db block changes"
(at least I cannot remember doing another observation, in addition it's
documented in that way as well
http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14211/sqltra
ce.htm#i4241).

* If a statement "suffers" from delayed block cleanout the TKPROF output
shows a higher number of "current" (which is Jeff's case).

* To check delayed block cleanouts it's possible to inspect "redo size"
(the CREATE INDEX contains NOLOGGING) or even better "cleanouts only -
consistent read gets".

Here an example:

* delayed block cleanout in action

SQL> exec sesstat.init('name in (''db block gets'',''consistent
gets'',''db block changes'',''redo size'',''cleanouts only - consistent
read gets'')')
SQL> create bitmap index i on t (n) nologging;
SQL> exec sesstat.print
Name                             Value
---------------------------------------- ------------
db block gets                         723
consistent gets                      10141
db block changes                      5266
redo size                         399204
cleanouts only - consistent read gets        4858

call   count   cpu elapsed disk query current  rows
------- ------ ----- -------- ----- ------ -------- -----
Parse     1  0.02   0.03   0   11     0    0
Execute    1  0.97   3.40 5003 10096    673    0
Fetch     0  0.00   0.00   0    0     0    0
------- ------ ----- -------- ----- ------ -------- -----
total     2  1.00   3.44 5003 10107    673    0

****** no delayed block cleanout

SQL> exec sesstat.init('name in (''db block gets'',''consistent
gets'',''db block changes'',''redo size'',''cleanouts only - consistent
read gets'')')
SQL> create bitmap index i on t (n) nologging;
SQL> exec sesstat.print
Name                             Value
---------------------------------------- ------------
db block gets                         707
consistent gets                       5298
db block changes                       407
redo size                          49080
cleanouts only - consistent read gets          0

call   count   cpu elapsed disk query current  rows
------- ------ ----- -------- ----- ------ -------- -----
Parse     1  0.01   0.01   0    1     0    0
Execute    1  0.61   0.63 5003  5105    673    0
Fetch     0  0.00   0.00   0    0     0    0
------- ------ ----- -------- ----- ------ -------- -----
total     2  0.62   0.65 5003  5106    673    0



HTH
Chris

--
http://www.freelists.org/webpage/oracle-l


©2008 dba.5341.com - Jax Systems, LLC, U.S.A.