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:
- Enklare administration: Man behöver inte ange PCTFREE, PCTUSED och grupper av FREELIST.
- Bättre utnyttjande av utrymme: Oracle vet med större noggrannhet hur mycket data ett block innehåller.
- 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:
- 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.
- Långsam för stora volymer av INSERT: Studier visar att MSSM är snabbare för bulk-INSERTs.
- 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.