Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

more physical reads than blocks (in this partition)

901531Jul 6 2012 — edited Dec 10 2012
Hi all,

I have table hash-partitioned on an indexed column "id" which is non-unique and part of my primary key. Inside each partition, rows with the same id are located close to each other which is done by dbms_redefinition reorg using orderby_cols. The intention is to reduce the amount of physical reads since there are no queries that don't filter on the id column.

What I'm seeing is a lot of physical reads though. The first partition has roughly 80K rows, an average row length of 347, block size of 8K and compression ... resulting in 821 blocks. And when (after flushing buffered cache and shared pool) submit a query that filters on "id" only and results is 106 selected rows, I see roughly 1400 physical reads.

--------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
--------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 106 | 36782 | 3 (0)| 00:00:01 | | |
| 1 | PARTITION HASH SINGLE | | 106 | 36782 | 3 (0)| 00:00:01 | 1 | 1 |
| 2 | TABLE ACCESS BY LOCAL INDEX ROWID| XXX | 106 | 36782 | 3 (0)| 00:00:01 | 1 | 1 |
|* 3 | INDEX RANGE SCAN | XXXXX | 1 | | 1 (0)| 00:00:01 | 1 | 1 |
--------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

3 - access("ID"=49743)


Statistiken
----------------------------------------------------------
22243 recursive calls
0 db block gets
66651 consistent gets
1404 physical reads
0 redo size
10933 bytes sent via SQL*Net to client
299 bytes received via SQL*Net from client
9 SQL*Net roundtrips to/from client
150 sorts (memory)
0 sorts (disk)
106 rows processed


I was hoping to see around 10-15 physical reads. And I don't understand how it can be 1400 physical reads with only 821 blocks in this partition. Can somebody explain this behavior to me?

thanks in advance,
Dirk
This post has been answered by Jonathan Lewis on Jul 6 2012
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 7 2013
Added on Jul 6 2012
10 comments
2,199 views