programmera.net -> oracledba -> normal för utskrift | info@programmera.net |
MSSM
1. Vad är MSSM? 2. PCTFREE 3. PCTUSED |
1. Vad är MSSM?
MSSM står för "Manual Segment Space Management" och är ett sätt att bestämma hur Oracle ska hitta block där det finns plats att lägga till nya rader. Eftersom data läggs till och tas bort från tabeller huller om buller måste vi ha något sätt att identifiera vilka block som är redo att ta emot mer data.
I MSSM löser vi detta problem genom tilldela varje databasobjekt (tabell eller index) en FREELIST som pekar ut de block som kan ta emot mer data. Allt eftersom data läggs till ett segment kommer block att försvinna från FREELIST, och när data tas bort kommer vi att få fler block i FREELIST.
2. PCTFREE
Denna parameter kan sättas då tabellutrymmet skapas (om du har SEGMENT SPACE MANAGEMENT MANUAL för tabellutrymmet). Parametern gäller då för alla block i tabellutrymmet. PCTFREE bestämmer när Oracle ska sluta lägga in mer data i blocket. När andelen lediga bytes blir mindre än PCTFREE procent av totala blockstorleken (minus headern) kommer Oracle ta bort blocket från FREELIST (registrera blocket som fullt). Default är 10%. Nedan ger jag exempel på situationer då man kanske vill ändra detta värde:
3. PCTUSED
Denna parameter kan sättas då tabellutrymmet skapas (om du har SEGMENT SPACE MANAGEMENT MANUAL). PCTUSED bestämmer när Oracle ska börja lägga in mer data i blocket. När man utför DELETE-satser på tabellen kommer rader att tas bort ur blocket och andelen lediga bytes att öka. När andelen lediga bytes blir större än PCTUSED kommer Oracle att lägga in blocket i FREELIST (registrera blocket som "icke fullt" så att nytt data kan adderas till blocket). Default är 40%.