mysql innodb 存储方式_Innodb和MySIAM在存储方式上有什么区别?

在mysql5.6之前的Innodb的innodb_file_per_table参数默认值设置是off,也就是说在mysql5.5版本的时候,所使用的innodb表的数据都存储在系统共享表空间的,如果有人觉得使用这个是最合适的话呢,那么他可能遇到下面的情况,在系统繁忙中,他会发现系统表空间在不断的增长,本来呢,这个也没有什么问题,只要没有超过磁盘你的限制是可以接受的,但是一旦我们的磁盘空间出现不足,我们为了释放磁盘空间,不得不需要在系统中删除大量的、无效的数据或者是一些长期不会使用的数据,比如像日志类的数据,我们在删除之后,系统表空间并不会减小,另外我们在这种情况下想通过复制日志文件的方式对数据库进行备份,由于虽然删除了数据,表空间的大小也不会改变,这就意味着我们在每次删除时都要浪费很大的空间,不要以为我么不会遇到这种问题,实际上我们目前是使用的innodb的热备方式就是这样处理的,因为这时候我们遇到了用到了使用系统表空间进行数据的存储的问题;而想要收缩系统表空间的唯一方式,就是把整个数据库所有Innodb表导出后,删除Innodb表相关的文件后,重启mysql服务器,进行表空间的重建,然后再导入数据,这个过程其实是很复杂的,并且十分耗时,在业务繁忙的生成环境中呢,显然是不可能做到的,使用系统表空间存储文件很显然的问题就是无法简单的收缩文件大小,造成大量的课件浪费,会产生大量的磁盘碎片,从而降低系统的性能如果我们使用独立表空间的话上面的问题就很好解决了,我们如果对一个大表的数据进行清理之后,可以很方便的只对这一个表进行optimize table操作,这样的话也会对这个表进行重建,但是对比对整个系统文件进行重建的话要快的多,而且不需要重启数据库服务器,甚至不会影响正常访问,从这点来看,显然使用独立表空间比使用系统表空间方便再来看一下使用系统表空间和独立表空间对IO产生的影响对于系统表空间来说呢,由于只有一个文件,如果同时对一个数据表空间进行刷新时,实际上在文件系统层面上来说,是按照顺序进行的,会产生IO瓶颈对于独立表空间来说呢,由于每一个表都有自己的独立表空间文件,自己在数据写入时,可以利用多个文件增加对IO处理的性能,所以对频繁写入来说不太适合系统表空间统一存放数据,而是要使用独立表空间的方式我强烈建议大量使用Innodb引擎时候,使用独立表空间来进行管理在mysql5.6版本之后,独立表空间也成为了默认的配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值