drop table

  • 这里先介绍一下【InnoDB】存储表空间概念:

Innodb存储引擎,可将所有的数据库数据存放于【ibdata1】的共享表空间;也可以将每张表存放于独立的.idb文件的独立表空间

(共享表空间和独立表空间都是针对数据的存储方式而言的。)

》共享表空间:某一个数据库的所有表数据都存放在一个文件中,默认这个共享表空间的文件路径在data目录下。

  默认的文件名【ibdata1】,初始化为10M。

》独立表空间:每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个【.frm】表描述文件,还有一个【.ibd】文件。

  其中这个文件包括了单独一个表的数据内容以及索引内容,默认情况下它的存储位置也是在表的位置之中。
  • 在【mysql】配置文件中有一个参数【innodb_file_per_table】,可以用来控制【innodb】对于表数据的存储规则。
》设置为ON:表示为每个innodb的表数据存在一个单独的【.idb】文件中。
在【drop table】的时候系统就会直接删除【.idb】文件,系统磁盘空间自然就释放了。 》设置为OFF:表示为所有表数据存放在系统共享表空间中,也就是跟数据字典放在一起。
  • 共享表空间和独立表空间的优缺点比较:
    • 共享表空间

优点:可以将表空间分成多个文件存放到各个磁盘上(表空间文件大小不受表大小限制,如一个表可以分布在不同的文件上)。数据和文件在一起方便管理

缺点:对于统计分析、日志系统这类应用不适合用共享表空间,因为多个表及索引在表空间混合,大量删除操作后会造成大量空间间隙。

    • 独立表空间

优点:

1》每个表都有自己的独立空间

2》每个表的数据和索引都存在自己的独立空间

3》可以实现表在不同的数据库中移动

4》空间可以回收:

a.【drop table】可以自动回收表空间

b.删除大量数据后,可通过指令【alter table [tablename] engine=innodb】重建表,来回缩空间

c.对于【innodb-plugin 的 innodb】,使用指令【turncate table】也会使空间收缩

d.独立空间表的使用,表空间的随便不会太影响全局性能,也方便处理

  • 现在我们可以说说【drop table】方式删除数据:
drop table #操作会删除所有表数据以及结构

delete table

  • 数据的删除流程:

1》MySQL在删除一条记录的时候,只是把这行记录标记为删除,但不会回收磁盘空间,被标记删除的位置可以被复用;

2》所以说【delete】命令只是把记录的位置或者数据页标记为【可复用】,但磁盘大小不会改变。这些可复用而没有使用的空间,看起来像个【空洞】。

  • 所以此时可能会出现表空间不释放的问题

不止删除会造成数据空洞,插入数据也会,如果数据是随机插入的,就可能会造成索引的数据页分裂。

上图是一个分裂前的B+Tree,此时B+Tree分裂后:

  • 重建表可以解决存在很多【空洞】的问题,从而收缩空间
alter table A engine = InnnDB  #可以重建表

最新文章

  1. Tomcat报错:Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
  2. CentOS系统下安装配置ftp服务
  3. [异常解决] 初玩SAE遇到的小问题——注册&创建项目+MyEclipse装插件直接部署+一个简单的JSP部署实现
  4. 部署时,出现用户代码未处理 System.Security.Cryptography.CryptographicException 错误解决方法
  5. 对Android项目中的文件夹进行解释
  6. git 冲突解决(转载)
  7. redis 安装注意事项
  8. iOS开发:创建真机调试证书
  9. (转)兼容主流浏览器的CSS透明代码
  10. Fragment 点击事件的穿透和重叠bug
  11. 让资源可以下载a
  12. javascript小练习—点击将DIV变成红色(通过for循环遍历)
  13. 在Linux下的找不同-打补丁
  14. 【CJOJ1603】【洛谷1220】关路灯
  15. Python中何时使用断言
  16. 教你如何用ps制作紫色光斑效果
  17. Ionic的页面堆栈与Tabs菜单相遇的问题(页面堆栈有多个)
  18. openstack环境搭建常用命令
  19. [err]default argument given for parameter 3 of '***'
  20. 【C++】atoi与stoi

热门文章

  1. HDU 5416 CBR and tree
  2. 计算机网络 之 Cisco packet tracer 的安装及汉化
  3. jQuery学习(三)
  4. Python抓取新浪新闻数据(二)
  5. Centos 6.5升级gcc : 源码安装 + rpm安装
  6. 最短路径树:Dijstra算法
  7. 树莓派4B踩坑指南 - (15)搭建在线python IDE
  8. G. 神圣的 F2 连接着我们 线段树优化建图+最短路
  9. print函数的全面认识
  10. 遍历HashMap常用的的三种方式