谁知道怎么释放mysql的磁盘空间?就是那个 ibdata1文件

解决方案 »

  1.   

    没有办法,只能导出数据后删除这个ibdata1再重新后再导入
      

  2.   

    这个是INNODB存储引擎的数据文件,使用共享表空间来存储数据的时候数据都写到这个文件里。你可以设置多个Ibdata文件,如
    #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
    限定每个文件的大小,最后一个文件必须是自动扩展的。这样设置后,要重新启动MYSQl服务才能生效。
    设置成独享表空间的话,每个表都有个.idb文件,这样文件相对来说会小很多。
      

  3.   

    配置文件中设置两个参数:
    innodb_file_per_table 设置为 1
    innodb_open_files , 设置成1024或更大优点:1.  每个表都有自已独立的表空间。2.  每个表的数据和索引都会存在自已的表空间中。3.  可以实现单表在不同的数据库中移动。4.  空间可以回收(除drop table操作处,表空不能自已回收)a)         Drop table操作自动回收表空间,如果对于统计分析或是日值表,删除大量数据后可以通过:alter table TableName engine=innodb;回缩不用的空间。b)         对于使innodb-plugin的Innodb使用turncate table也会使空间收缩。c)         对于使用独立表空间的表,不管怎么删除,表空间的碎片不会太严重的影响性能,而且还有机会处理。