Adams - Hash Clusters Oracle

  • Uploaded by: rockerabc123
  • 0
  • 0
  • May 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Adams - Hash Clusters Oracle as PDF for free.

More details

  • Words: 721
  • Pages: 17
Using Hash Clusters

Unix + Oracle =

Ixora

Steve Adams [email protected]

Cluster Blocks Table Directory

Row Directory

• Table directory • partitions the row directory • row numbers are relative to their table • cluster keys are stored as table 0

Unix + Oracle =

Ixora

0 1 0 1 2 3 4 0 1 2

Steve Adams [email protected]

Cluster Key Changes • Performed by recursive/service transactions • commit independent of parent/user transaction • improves concurrency

• Single threaded • to prevent incompatible key changes • always use ITL slot 1 • slot 1 is reserved - user transactions never use it

• wait in shared mode for TX lock if slot is busy Unix + Oracle =

Ixora

Steve Adams [email protected]

Index Cluster Inserts • Key can be inserted to block if • number of keys < (data area size - 14) / SIZE • available space > SIZE - 27 • key and data row pieces fit below PCTFREE

• Row inserts • • • •

lookup key in cluster index insert to (last) data block if space permits try up to 3 previous blocks in the key chain link a freelist block into the key chain & insert

Unix + Oracle =

Ixora

Steve Adams [email protected]

Index Cluster Deletes • Data row piece headers have a key index • Keys have current & pending row counts • both incremented on insert • pending decremented on delete • current decremented on stub cleanout

• Flushable keys • current count was, or pending count is zero • when inserting a new key, try to clean out all committed stubs and flush keys if possible Unix + Oracle =

Ixora

Steve Adams [email protected]

Demonstration • Flushable keys • Key insert restrictions

Unix + Oracle =

Ixora

Steve Adams [email protected]

Demonstration • Index clusters row inserts

Unix + Oracle =

Ixora

Steve Adams [email protected]

Cluster Key Scans • Purpose • to fetch all rows for a clustered table with a known cluster key value

• Buffer gets • visit all blocks in the key chain (reverse order) • scan row directory entries for the table and check cluster key index for all rows Unix + Oracle =

Ixora

Steve Adams [email protected]

Assessing Cluster Key Chaining • Detection • compare cluster key scan block gets to the cluster key scans statistic • maybe DBA_CLUSTERS . AVG_BLOCKS_PER_KEY

• Fix • rename existing tables and create new cluster • use PL/SQL iterate over the cluster keys and copy all rows for each key in turn Unix + Oracle =

Ixora

Steve Adams [email protected]

Hash Theory • TBD

Unix + Oracle =

Ixora

Steve Adams [email protected]

Hash Clusters • Fixed blocks • formatted during cluster creation • hash key value implied by location • keys never flushed; blocks never freed • no data row counts, or previous key rowid needed

• Chained blocks • just like index cluster blocks • key data is hash key value Unix + Oracle =

Ixora

Steve Adams [email protected]

Demonstration • Hash cluster

Unix + Oracle =

Ixora

Steve Adams [email protected]

Single Table Hash Clusters • Better “single row per hash key” • Reserved slots • one row slot per key • cluster key scans only inspect that slot iff no keys have more than one row • otherwise scan all row slots for table

• “A” flag in data layer flag byte • no more than one row per key Unix + Oracle =

Ixora

Steve Adams [email protected]

Demonstration • Single table hash cluster

Unix + Oracle =

Ixora

Steve Adams [email protected]

Hash Functions • Internal hash function • returns 31-bit positive integer • good distribution, but not perfect • mod(hash value, HASHKEYS)

• HASH IS column_name • must be integer column • saves hash computation • no false collisions Unix + Oracle =

Ixora

Steve Adams [email protected]

Demonstration • Single table hash cluster without HASH IS

Unix + Oracle =

Ixora

Steve Adams [email protected]

Hash Cluster Data Density • Use SINGLE TABLE syntax if possible • Otherwise • • • •

2K tablespace block size no SIZE parameter HASHKEYS is number of fixed blocks needed primary key columns first in row

• Benefits • minimize CPU cost of cluster key scans • maximize data density - only one key per block Unix + Oracle =

Ixora

Steve Adams [email protected]

Related Documents

Hash
May 2020 6
Clusters
June 2020 9
Clusters
October 2019 16
Adams
May 2020 23

More Documents from ""