Åtminstone med InnoDB (och jag hoppas att de har dig på det här), har du fler operationer även utan främmande nycklar . En insert är ungefär detta:
- Infoga rad
- Markera i binär loggbuffert
- Markera åtagande
Borttagningar gör följande:
- Markera rad borttagen (tar samma träff som en infogning -- sidan skrivs om)
- Markera i binär loggbuffert
- Markera som engagerad
- Ta faktiskt bort raden, (ta samma träff som en infogning -- sidan skrivs om)
- Rensa tråd spårar borttagningar i binär loggbuffert också.
För det har du dubbelt så mycket arbete att ta bort istället för att infoga. En radering kräver dessa två skrivningar eftersom den måste markeras som borttagen för alla versioner framöver, men kan bara tas bort när inga transaktioner kvarstår som ser den. Eftersom InnoDB bara skriver hela block, till disken, är modifieringsstraffet för ett block konstant.