0% found this document useful (0 votes)
23 views16 pages

Fixed Block Header: Pctfree

The document discusses how to size non-clustered tables and indexes in Oracle. It describes how to calculate the average row and index entry length, header space per row/entry, bytes per row/entry, total bytes required, block header sizes, available space per block, and number of rows per block. Formulas are provided to determine these values based on statistics from the table and indexes.

Uploaded by

balasjc
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views16 pages

Fixed Block Header: Pctfree

The document discusses how to size non-clustered tables and indexes in Oracle. It describes how to calculate the average row and index entry length, header space per row/entry, bytes per row/entry, total bytes required, block header sizes, available space per block, and number of rows per block. Formulas are provided to determine these values based on statistics from the table and indexes.

Uploaded by

balasjc
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 16

Fixed block header

Variable block header

Available space
Row header Row data

Row header Row data

Row header Row data

PCTFREE
Sizing Non-clustered tables

To determine average row length:

Select
avg(nvl (vsize (column1),0) ) +
avg(nvl (vsize (column1),0) ) +
avg(nvl (vsize (column1),0) ) avg_row_length

from table_name;
Sizing Non-clustered tables

Header space per row:

Header space
per row = 3 +
number of short columns +
(3 * number of long columns)
Sizing Non-clustered tables

Bytes per row:

Bytes per row = Header space per row +


average row length

Total bytes required for all rows in table:

Total Bytes required = Bytes per row *


number of rows
Sizing Non-clustered tables

Block header size:

Fixed block header size (in bytes) = 57 + 23 * INTRANS

Variable block header size (in bytes) = 4 + 2 * number of


rows per block
Sizing Non-clustered tables

Available space per block:

Available space per block = total block size –


fixed block header size –
variable block header size
= (total block size –
fixed block header size –
variable block header size)
– ((block size – fixed block header size) *
(PCTFREE / 100)) – 4 – 2R

= (block size – (57 + 23 * INTRANS) )


– ((block size – (57 + 23 * INTRANS) ) *
(PCTFREE / 100)) – 4 – 2R
Sizing Non-clustered tables

Number of rows per block:

Number of rows per block = available space per block / bytes per row

= ((block size – (57 + 23 * INTRANS) )


– (block size – (57 + 23 * INTRANS) ) *
(PCTFREE / 100) – 4 – 2R ) /
( Header space per row + average row length)
Sizing Non-clustered tables

Average row length = 25 bytes

The row header for each row = 6 bytes

Block Size = 2048 bytes (2KB)

Find number of rows per Block (R)


Determining PCTFREE
To determine number of rows

select count(*) from tablename;

To identify the parameters of rowid

select
count (distinct ( substr (rowid,1,8) ||
distinct (substr (rowid,15,4) )
) from tablename;

00007654. 0001. 0003


Determining PCTFREE
In oracle 7:
ANALYZE TABLE tablename COMPUTE STATISTICS;

Dividing NUM_ROWS by BLOCKS


gives the number of rows per blocks

Select
num_rows,
blocks,
num_rows / blocks from user_tables
where table_name = ‘TABLENAME’;
Sizing indexes

To determine average index size for two columns

Select
avg(nvl (vsize (column1),0) ) +
avg(nvl (vsize (column1),0) ) )
avg_index_entry_length

from table_name;
Sizing indexes

Header space per entry:

Header space
per index entry = 3 +
number of short columns +
(3 * number of long columns)
Sizing indexes

Bytes per entry:

Bytes per row = Header space per entry +


average index entry length

Total bytes required for all indexes in table:

Total Bytes required = Bytes per entry *


number of entries
Sizing indexes

Block header size:

Fixed block header size (in bytes) = 113

Variable block header size (in bytes) = 23 * INTRANS


Sizing indexes

Available space per block:


Available space per block = total block size – block header size –
((total block size – block header size )
* (PCTFREE/100))
Sizing Non-clustered tables

Number of rows per block:

Number of rows per block = available space per block / bytes per row

= ((block size – (57 + 23 * INTRANS) )


– (block size – (57 + 23 * INTRANS) ) *
(PCTFREE / 100) – 4 – 2R ) /
( Header space per row + average row length)

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy