2.MySQl优化Optimizing Storage Layout for InnoDB Tables

介绍

  • 一旦数据达到稳定大小,或者一张表增加了几十或几百兆字节,请考虑使用该OPTIMIZE TABLE语句重新组织表并压缩任何浪费的空间。重组表可以较少全表扫描的磁盘I/O操作。这个技术可以在其他方式无法优化时提高性能。

    OPTIMIZE TABLE复制表数据并且重建索引,重建索引可以优化索引结构,减少表空间和磁盘碎片。这个优化效果取决于表的数据量。这个优化可能根据不同的数据库产生不同的效果,或者随着数据量的增加,优化效果越来越差。假如表很大或者正在重建索引无法使用缓冲池,这个操作可能很慢。向表中添加大量数据后第一次运行通常比以后慢的多。

  • 在InnoDB引擎中,当有一个长主键时(无论是单个列的长度很长,还是因为多个列组合的符合索引很长)会浪费很大的磁盘空间。在指向主键索引的所有二级索引中都包含主键索引,这样会浪费大量空间。假如主键索引很长,可以使用AUTO_INCREMENT自增主键,或者使用列的前缀不使用整个索引。

  • 使用VARCHAR类型替换CHAR类型保存变长字符串或者列中包含大量NULL值的列。一个CHAR(N)的列总是占用N个字节,假如一个字符串比N小或者是NULL,则会造成空间浪费。空间浪费会造成磁盘I/O的大量无用读,所以建议没有特殊情况使用VARCHAR类型。

    当使用COMPACT行格式时(InnODB默认格式),或可变长度的字符集utf8或者sjis, CHAR(N)列会占用可变空间量,但最少是N字节。

  • 对于大表或者大量重复文本活数字数据的表,可以考虑使用COMPRESSED行格式,将数据放入缓冲区或者全表扫描时可以较少磁盘I/O扫描,可以使用COMPRESSED与COMPACT行格式相比较来确定压缩量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值