mysql两种存储引擎详解

mysql中常见的存储引擎分为两种,一种是innodb,一种是myisam,两者各有千秋,大家可能会问,我们建表的时候应该选择哪种存储引擎合适呢?,下面让我们详细的介绍下两种存储引擎

MyIsam 简介

MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。

Innodb 简介

InnoDB,是MySQL的数据库引擎之一,为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL。目前InnoDB采用双轨制授权,一是GPL授权,另一是专有软件授权。

innodb与myisam的区别:

  • 存储结构

    • MyIsam:每个Myisam类型的表在磁盘存储上分为三个文件
      • 以.frm结尾的文件,用来存储表定义
      • 以.myd结尾的文件,用来存储表中的数据
      • 以.myi结尾的文件,用来存储表中的所得
    • Innodb:每个innodb类型的表在磁盘存储上分为两个文件
      • 以.frm结尾的文件,用来存储表定义
      • 以.idb结尾的文件,用来存储表中数据
  • 存储空间

    • Myisam:可被压缩,存储空间较小,支持三种不同的存储格式:静态表,动态表,还有压缩表,在mysql中有固定的缓冲池(例:show status like ‘key_buffer%’)
    • innodb:相对myisam而言,需要更多的内存与存储空间,在mysql中同样也有固定的innodb缓冲池(例:show status like ‘innodb%pool%’)
  • 事务支持(!important)

    • myisam:相对而言强调的是性能,对写入操作等要快于innodb,但是并不支持事务
    • innodb:提供事务支持,外键支持等高级数据库功能,具备事务,回滚,和较为强大的崩溃修复能力。
  • 表锁差异

    • myisam:只支持表级锁,用户在执行DML语句时都会给表自动加锁,对并发请求相对而言支持的较弱,但也有优点就是不会发生死锁。
    • innodb:不仅支持表级锁,还支持行级锁,相对而言并发性能要好了很多,但是会造成死锁的发生 ==!。
  • 全文索引

    • myisam:在mysql 4.x 之后支持全文索引。
    • innodb: 在mysql 5.6.x 之后支持全文索引。
  • 表主键

    • myisam:允许没有任何索引和主键的表存在,索引中保存的其实是行的地址
    • innodb: 如果没有设置主键或者非空的唯一索引,存储引擎会自动生成一个6字节的主键(用户不可见)。
  • curd操作

    • myisam:如果执行大量的select,delete操作,myisam可能相对更加高效一些
    • innodb:相对而言会差一些,如delete from table 在inndb存储引擎中,innodb不会重新创建一张表,而是逐行删除,所以要清空含义大量数据的表,建议使用 truncate table 命令
  • 外键

    • myisam:不支持
    • innodb:支持

看完上面这些区别,大家对两种存储引擎的不同有了一定的认识,相信对今后如何选择存储引擎有了一些自己的想法,建议为了数据安全和可维护性,大家在今后的工作中一个数据库中只使用一种存储引擎,当然作者本人更倾向于innodb。

附:
DML操作:数据库操作语言,详解:传送门
三种不同的存储格式:详解:传送门
锁:详解:传送门 or 入门介绍

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值