MySQL中MyISAM和InnoDB的区别

区别

  • 1.InnoDB 支持事务,MyISAM 不支持事务。MyLSAM强调的是性能,执行速度更快,如果需要大量的SELECT操作,可以选用M有ISAM表,而InnoDB数据库功能更为高级,如果数据要执行大量的INSERT或UPDATE操作,应该使用InnoDB表

  • 2.MyISAM支持全文索引,InnoDB不支持全文索引(MySQL5.6之后的版本,InnoDB也支持全文索引)。
    (全文索引可能存在精度问题,但在大量的数据面前,检索速度相较常规检索快很多)

  • 3.InnoDB 支持外键,MyISAM 不支持外键。如果对一个包含外键的 InnoDB 表转为 MYISAM 表会失败;

  • 4.由于InnoDB支持行级锁定,这意味着与MyISAM相比,插入和更新要快得多。而在MyISAM中,MyISAM具有表级锁定,行级锁定和关系完整性是不可能的,一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,因此并发访问受限。

  • 5.InnoDB不会将数据保存为表级别,执行 select count(*) from table 时需要全表扫描。而MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;

  • 6.InnoDB支持ACID(原子性,一致性,隔离性和耐久性)属性,而MyISAM不支持。

  • 7.在InnoDB表中,AUTO_INCREMENT(自增)字段是索引的一部分。但是在MyISAM中,也可以将该字段和其他字段一起建立联合索引。

  • 8.InnoDB中的表一旦删除,便无法重新建立,而是一行一行的删除。因此速度非常慢。推荐使用truncate table,不过需要用户有drop此表的权限。

  • 9.MyISAM崩溃后无法安全恢复,InnoDB拥有一套完善的崩溃恢复机制,能在崩溃后正常恢复。

  • 10.MyISAM将索引和数据分开进行存储。索引存放在.MYI文件中,数据存放在.MYD文件中。索引中保存了相应数据的地址。以表名+.MYI文件分别保存。 InnoDB的主键索引树的叶子节点保存主键和相应的数据。其它的索引树的叶子节点保存的是主键。因此,InnoDB必须要有主键.

综上可以看出,除非小型项目,追求查询性能等,选择InnoDB不会错.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值