mysql数据的完整性--草稿

mysql的数据删除的原理

我的数据删除了为什么表还是这么大?

mysql删除数据的原理

mysql采用标记删除法,即并不是物理删除而是采用标记删除。
delete数据时候:数据标记为可服用,如果插入的数据在这个数据页,可复用这个空间,例如:索引页的范围内可复用,超过了则需要插入新的空间。
delete整个数据页:如果数据页上所有数据被删除,则整个数据页可复用。

数据页的分裂和合并

如果数据页利用率小,数据页会合并。
如果数据页满了,中间插入会导致数据页分裂。

释放表空间

1
ALTER TABLE t ENGINE=innodb;

在mysql5.5会有MDL锁,不能Online执行

在mysql5.6会有online ddl机制,但是会小号CPU和IO(因为扫表),大表请谨慎。

这两种区别
5.5是在server层,copy出tmp_table,这时候不能对原表进行操作,然后copy到老表中。
5.6是在innodb层,copy出tmp_file,改的写row_log,然后重放生成逻辑一直的新表,tmp_file inplace操作到老表中。(tmp_file是个inplace操作)