前言:设置启动选项 innodb_file_per_table 即可启用独立表空间。不过,InnoDB总是需要共享标空间,.ibd文件对InnoDB不足以去运行,共享表空间包含熟悉的ibdata文件,InnoDB把内部数据词典和未作日志放在这个文件中。
测试环境:Windows XP, MySQL 6.0.0-alpha-community-nt-debug
先来查看一下该表的状态:
mysql> SHOW TABLE STATUS LIKE 'yejr'\G
*************************** 1. row ***************************Name: yejrEngine: InnoDBVersion: 10Row_format: CompactRows: 162049Avg_row_length: 80Data_length: 13123584
Max_data_length: 0Index_length: 28983296Data_free: 0Auto_increment: NULLCreate_time: 2007-09-13 21:58:53Update_time: NULLCheck_time: NULLCollation: latin1_swedish_ciChecksum: NULLCreate_options:Comment: InnoDB free: 4096 kB
该表空间文件大小:
D:\.....data\test>dir yejr.ibd
2007-09-13  22:18        50,331,648 yejr.ibd
清空该表:
mysql> TRUNCATE TABLE yejr;
现在,再来看看它的状态:
mysql> SHOW TABLE STATUS like 'yejr'\G
*************************** 1. row ***************************Name: yejrEngine: InnoDBVersion: 10Row_format: CompactRows: 0Avg_row_length: 0Data_length: 16384
Max_data_length: 0Index_length: 49152Data_free: 0Auto_increment: NULLCreate_time: 2007-09-13 21:58:53Update_time: NULLCheck_time: NULLCollation: latin1_swedish_ciChecksum: NULLCreate_options:Comment: InnoDB free: 45056 kB
以及表空间文件大小:
D:\.....data\test>dir yejr.ibd
2007-09-13  22:18        50,331,648 yejr.ibd
可以看到,表空间文件没有发生变化,因为InnoDB不会自动收缩表空间文件尺寸,但是实际空间却是释放出来了。
那么,如果我们想让InnoDB表空间文件也释放,该怎么办呢?
很简单,执行下面的语句,然后再看看:
mysql> OPTIMIZE TABLE yejr;
mysql> SHOW TABLE STATUS like 'yejr'\G
*************************** 1. row ***************************Name: yejrEngine: InnoDBVersion: 10Row_format: CompactRows: 0Avg_row_length: 0Data_length: 16384
Max_data_length: 0Index_length: 49152Data_free: 0Auto_increment: NULLCreate_time: 2007-09-16 15:07:28Update_time: NULLCheck_time: NULLCollation: latin1_swedish_ciChecksum: NULLCreate_options:Comment: InnoDB free: 0 kB
以及表空间文件大小:
D:\.....data\test>dir yejr.ibd
2007-09-16  15:10           147,456 yejr.ibd
可以看到,不只是可用空间,包括表空间文件的尺寸都释放了。
另外,也可以执行一个所谓的 NULL 操作来达到同样的目的:
mysql> ALTER TABLE yejr ENGINE = InnoDB;
本文出自 “MySQL中文网”博客 http://www.imysql.cn/ 

转载于:https://blog.51cto.com/imysql/308544

[InnoDB系列] - InnoDB释放表空间相关推荐

  1. mysql truncate 释放空间_mysql truncate table未释放表空间磁盘空间

    truncate table tablename; 该命令可以清空一个表里的所有数据,并归1自增ID的值. 但myisam的表和innodb的表在使用上有一定的区别. myisam表会清空所有数据,并 ...

  2. mysql释放表空间

    公司用的阿里云的RDS数据库 经常磁盘空间超过80% 后来发现有一个表message数据就30万,却占用了65G空间,非常不正常. 后来发现有一个命令,可以释放表空间. 命令如下 optimize t ...

  3. oracle自动释放表空间,Oracle中关于清除数据和释放表空间

    一.表的重命名 flashback table test2 to before drop rename to test3;--[to test3]将表重命名 drop table test3 purg ...

  4. Oracle使用delete删除部分表数据后,如何释放表空间??

    1.删除表的部分数据,并释放对应的表空间: 1.利用"alter table 你的表名 enable row movement;"语句开启允许行移动,该语句允许rowid改变: 2 ...

  5. [InnoDB系列] - InnoDB独立/共享表空间的转换

    前言:设置启动选项 innodb_file_per_table 即可启用独立表空间.不过,InnoDB总是需要共享标空间,.ibd文件对InnoDB不足以去运行,共享表空间包含熟悉的ibdata文件, ...

  6. oracle删除数据释放表空间流程

    生产环境:数据库里空间不足,niptest 表空间251G,只使用了17G 再alter database datafile '...../niptest1' resize 10G; 的时候说超出了范 ...

  7. pg库删除数据释放表空间

    1.delete删除表数据后,表空间并没有释放,实际数据并没有被删除,只是对要删除的行做了标记: 2.执行vacuum full table_name,清理磁盘空间,一千万条表结构不复杂的数据,耗时4 ...

  8. Oracle 学习系列之一(表空间与表结构)

    create tablespace user3 datafile 'e:\test\user3_data.dbf' size 20M --表空间初始大小为: 20M autoextend on nex ...

  9. oracle清理数据及释放表空间

    查询表所占表空间大小 select t.tablespace_name,t.owner, t.segment_name, t.segment_type, sum(t.bytes / 1024 / 10 ...

最新文章

  1. (转)Objective-C中的instancetype和id区别
  2. win7系统启动到一半停止_win7系统启动一半死机的解决方法
  3. 搜索引擎爬虫蜘蛛的UserAgent收集
  4. 经典数学问题:Nim游戏
  5. 登录界面点击登录后如何延迟提示成功的div的显示时间并跳转
  6. 学python需要记笔记吗_开始学python,一些笔记
  7. [转] 外企面试官最爱提的问题 TOP10
  8. php ci is numeric,CI继承类MY_Model
  9. 设计模式----装饰模式(C++实现)
  10. java参数可变方法
  11. SDCMS1.3.1 发布插件
  12. Latex的pdf合并
  13. mac文件反选_(完整版)MAC版PS快捷键
  14. vue中奖名单,新闻列表跑马灯,无缝上下滚动
  15. origin画对数坐标_如何用Origin绘制对数坐标图、双横坐标图及插入到Word文稿
  16. c 语言单片机开发,单片机C语言开发离不开它
  17. 4、判断一个年份是否为闰年。(闰年即满足以下两条件的年份:其一:能被4整除但不能被100整除;其二:能被400带除)
  18. 有一头母牛,它每年年初要生一头小母牛;每头小母牛从第四个年头起,每年年初也要生一头小母牛。按此规律,若无牛死亡,第20个年头上共有多少头母牛
  19. 约翰-聂夫的投资原则
  20. 公司保密协议(中英对照)Confidentiality-Agreement

热门文章

  1. 为避免攻击,研究员把严重的比特币漏洞详情焐了两年
  2. 近一半的智能手机受高通 Snapdragon 漏洞影响
  3. shell入门(一)
  4. 如何解决Greenplum中无法通过标准命令修复的元数据错误
  5. 2016年新运维:优云论《普通运维人员就是秋后的蚂蚱》
  6. AngularJS控制器和AngularJS过滤器的学习(3)
  7. linux下如何安装charles
  8. css中的大于号是什么意思 有何作用
  9. libiconv交叉移植
  10. eclipse建java项目不见_秒建一个后台管理系统?用这5个开源免费的Java项目就够了...