programmera.net -> oracledba -> normal     för utskrift      info@programmera.net

ASSM

1. Vad är ASSM?
2. Bitmappad FREELIST
3. FREELIST i trädstruktur
4. Fördelar och Nackdelar med ASSM

1. Vad är ASSM?

ASSM (Automatic Segment Space Management) är en strategi för att hitta block där det finns plats att lägga till nya rader. ASSM löser alltså samma problem som  MSSM , men med några skillnader som kommer att beskrivas på denna sida.

  • OBS: ASSM introducerades i Oracle 9iR2 och används per default i Oracle 10gR2. Om du behöver specifiera att du vill använda ASSM skriver du "SEGMENT SPACE MANAGEMENT AUTO".
  • OBS2: Man kan bara använda ASSM på tabellutrymmen som är "LOCALLY MANAGED", alltså inte på de som är "DICTIONARY MANAGED".

2. Bitmappad FREELIST

ASSM använder sig av en Bitmappad FREELIST. Varje block har alltså en bitmappad kod som beskriver dess status, se tabellen nedan:

Kod Beskrivning
0000  Oformatterat block.
0001  Blocket är logiskt fullt.
0010  0% < Fritt utrymme < 25%.
0011  25% < Fritt utrymme < 50%.
0100  50% < Fritt utrymme < 75%.
0101  75% < Fritt utrymme < 100%.

I ASSM placerar alltså alla block någonstans på en femgradig skala. Den algoritm som används för att bestämma vilket block som ska användas vid en INSERT håller Oracle hemlig.

3. FREELIST i trädstruktur

Den bitmappade FREELIST som utnyttjas av ASSM lagras i en trädstruktur istället för en länkad lista som MSSM. Detta medför att att det är lättare för flera samtidiga användare att utnyttja listan, eftersom man kan utnyttja delar av trädet utan att bry sig om vad som händer i andra delar.

  • Med MSSM fick man ibland många "buffer busy waits" då flera sessioner försökte utföra INSERT på samma tabell. Detta på grund av att sessionerna fick vänta på att få utnyttja FREELIST. Detta kan iofs avhjälpas med att man skapar grupper av FREELISTs, men det tillför lite extraarbete och fungerar inte lika bra som FREELIST för ASSM.

4. Fördelar och Nackdelar med ASSM

Oracle rekommenderar att man utnyttjar ASSM av tre anledningar:

  1. Enklare administration: Man behöver inte ange PCTFREE, PCTUSED och grupper av FREELIST.
  2. Bättre utnyttjande av utrymme: Oracle vet med större noggrannhet hur mycket data ett block innehåller.
  3. Bättre parallellitet: Man mindre risk att transaktioner som arbetar parallellt mot samma tabell måste vänta på varandra.
ASSM passar extra bra för RAC-användare, som i MSSM måste lägga stor omsorg på att skapa multipla FREELISTs för varje tabell. Följande nackdelar har identifierats:
  1. Långsam FTS: Det har visat sig att ASSM är långsammare på att göra Full Table Scan. ASSM passar därför dåligt för DataWarehouse applikationer.
  2. Långsam för stora volymer av INSERT: Studier visar att MSSM är snabbare för bulk-INSERTs.
  3. Splittrade index: ASSM är mindre benägen att placera angränsande rader i fysiskt angränsande datablock än MSSM, vilket gör indexering mer kostsamt.
Hur som helst rekommenderar Oracle att alla använder ASSM.