← Back to team overview

maria-discuss team mailing list archive

How does InnoDB delete rows?


Hi everyone.

I have some questions regarding InnoDB deletion process.

As far as I know, when we issue a DELETE command to a row stored in a
InnoDB table, the row contents are stored in the UNDO Log, and the contents
of the row are only deleted when the last transaction after the DELETE
transaction has finished. But what actually happens to the row that was
deleted? Is any disk space ever released to the OS, or are the contents
simply erased? Defragmenting a table is only done through OPTIMIZE TABLE,
or are there any automatic threads responsible for rearranging the rows?
And if the are no such threads, how do we maintain tables which suffer from
many deletions?

I hope I made myself clear. Thanks in advance,

    Arlindo Neto.

Follow ups