MySQL的delete操作对表结构的影响

原创
小哥 3年前 (2022-11-08) 阅读数 41 #大杂烩

delete几个操作案例

  1. drop操作: 无论什么发动机,Innodb还是myisam将释放磁盘空间。
  2. truncate操作: truncate和drop一样将释放磁盘空间。,但与drop不同的是,truncate=drop+create,是创建一个新的空表,保留了mysql的表结构
  3. delete操作:
    • delete from table_name已删除所有数据,对于myisam释放磁盘空间,innodb不会释放
    • delete from 带where的删除都不释放磁盘空间,可以使用optimize table name进行释放

分析

1.删除后数据不会从表中删除。,相反,表空间继续以碎片形式存在。,您可以使用命令查看

show table status like table_name;

2.data_free指示片段的大小

  1. 使用optimize优化

    optimize table table_name;

  2. 优化后的比较

存储引擎差异

  1. innodb:
  • 支持事务,外键,行级锁,
  • 属于索引组织表,您可以使用共享表空间存储或多表空间存储。
    • 共享表空间存储和myisam一样,以表名开头,拓展名是frm;索引文件和数据文件存储在表空间中。
    • 使用多表空间存储,每个表都有一个表空间文件,用于存储每个表的数据和索引。
  1. myisam:
  • 不支持外键,事务,属于堆表
  • 磁盘存储上有三个文件。: frm存储表的定义;myd用于存储数据;myi用于存储表索引
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门