首页 > 技术文章 > MySQL存储引擎

yhqq512 2019-04-24 16:00 原文

一、查看MySQL支持的存储引擎

show engines;

二、MyISAM和InnoDB存储引擎对比

  存储方式 存储空间 可移植性 事物支持 其他
MyISAM

三个文件存储

.frm(存储表定义)

MYD(MYData,存储数据)

MYI(MYIndex,存储索引)

可被压缩,存储空间较小。

支持三种不同的存储格式:

  • 静态表(默认,但是注意数据末尾不能有空格,会被去掉)、
  • 动态表、
  • 压缩表

数据以文件形式存储,跨平台性强

不支持事物

 

  1. 只支持表级锁
  2. 支持全文索引
  3. 允许没有主键和索引
  4. 保存了表的总行数(select count(*) 则会直接取出)
  5. 适合做查询使用(select)
  6. 不支持外键
InnoDB

存储在两个文件中 

一个是定义文件

一个是数据文件

需要更多的内存和存储,

它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引

免费的方案可以是拷贝数据文件、备份 binlog,

或者用 mysqldump,数据量打的时候不好处理

支持事物

  1. 支持事物和行级锁 
  2. 不支持全文索引
  3. 如果没有主键和索引,系统会默认添加用户不可见
  4. 没有保存行数,通过遍历获取行数
  5. 适合插入和更新使用(insert update )
  6. 支持外键
总结

通过上述的分析,基本上可以考虑使用InnoDB来替代MyISAM引擎了,原因是InnoDB自身很多良好的特点,

比如事务支持、存储 过程、视图、行级锁定等等,在并发很多的情况下,相信InnoDB的表现肯定要比MyISAM强很多。

另外,任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

如果不是很复杂的Web应用,非关键应用,还是可以继续考虑MyISAM的,这个具体情况可以自己斟酌  

 

 

    

 

推荐阅读