MySQL的两个存储引擎--MyISAM和InnoDB

MySQL区别于其他数据库的最重要的特点就是其插件式的表存储引擎。流行使用的有两个:MyISAM和InnoDB

1. MyISAM存储引擎

MyISAM存储引擎是MySQL官方提供的存储引擎。其特点是不支持事务、支持表锁和全文索引,对于一些在线分析处理操作速度快。表锁的并发读没有问题,但是并发插入性能就差一些。由于不支持事务,MyISAM容易丢失数据。

MyISAM存储引擎,每一个表都被存放为3个以表名命名的物理文件。
存放表结构定义信息的.frm文件,存放表数据的.MYD文件,存放索引数据的.MYI文件。

MyISAM支持以下三种类型的索引
1. B-Tree索引
所有的索引节点都按照balance tree的数据结构来存储,所有的索引数据节点都在叶节点
2. R-Tree索引
主要用于为存储空间和多维数据的字段做索引,一般很少用到
3. Full-text索引(全文索引)
存储结构也是b-tree,主要是为了解决like查询的低效问题。

2. InnoDB存储引擎

InnoDB存储引擎支持事务,主要面向在线事务处理方面的应用。其特点是行锁设计、支持外键,并支持类似Oracle的非锁定读,即默认情况下读取操作不会产生锁。

在InnoDB存储引擎表中,每张表都有个主键,如果在创建表时没有显式地定义主键,则InnoDB存储引擎会按如下方式选择或创建主键。

  1. 首先表中是否有非空的唯一索引,如果有,该列为主键
  2. 不符合上述条件,InnoDB存储引擎自动创建一个6字节大小的指针。

外键约束

保证两张表之间的关系。比如删除一个表的行,和它相关表的行也会被删除。

索引

InnoDB存储引擎支持两种常见的索引,一种是B+树索引,另一种是哈希索引(注意,哈希索引是自动设置的,不能手动设置)。

InnoDB存储引擎在行级别对表数据上锁,包括共享锁和排他锁。

事务

在数据库提交工作时,可以确保要么所有修改都已经保存了,要么所有修改都不保存。
系统crash对Innodb来说并不能造成验证的损失。Innodb完全可以利用redo日志在数据库crash时刻已经完成,但是还没有来得及将数据写入磁盘的事务恢复。也可以将所有部分完成写入磁盘,但未完成事务
所以如果你的项目需要事务处理和外键,选择InnoDB吧。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值