InnoDB和MYISAM区别

来源:互联网 发布:淘宝店网址在哪里 编辑:程序博客网 时间:2024/06/05 05:04

今天复习了Mysql数据库的引擎

那么什么是数据库引擎呢?

首先我们要先知道    数据库和数据库实例的概念区别:            数据库就是文件的集合。            数据库实例就是应用程序(进程/线程),位于用户和操作系统之间的数据库管理软件,是真正操作数据库文件的。            故Mysql不能简单的解释成数据库。

下面就来说说常见的innoDB和MYISAM的区别

**支持事务:**         innoDB支持事务,并且实现了标准的四种隔离级别         MYISAM不支持事务
 **锁及外键:**         innoDB支持行级锁,支持外键约束(行级锁不是绝对的)         MYISAM支持表级锁,不支持外键
 **保存行数:**         innoDB不保存行数,count(*)时需要扫描全表         MYISAM保存行数,直接读取即可
  **缓冲池:**         innoDB会在内存建立缓冲池,存储缓冲数据和索引         MYISAM无
**索引限制:**         innoDB不支持全文索引         MYISAM支持全文索引,要求主索引唯一
**索引结构:**         innoDB索引结构时B+树,数据域存储实际数据(聚集索引),必须有主键,主键非递增/减时效率很低         MYISAM索引结构B+树,数据域存储数据地址(非聚集索引),不要求主键
**辅助索引:**             innoDB辅助索引先根据辅助索引找到主键,再根据主键索引找到实际数据,所以建议主键不要过长          MYISAM主索引key唯一,辅助索引可以重复
适用情景:         innoDB使用高并发,大容量,插入删除等操作多时         MYISAM使用与查询操作多时

还需要注意innoDB的几个锁:

   行级锁:  共享锁(读锁)   排他锁(写锁)   意向锁:(表) 意向共享锁(数据行加共享锁前必须先取得该表的IS锁 )                   意向排他锁(表中几行排他锁)
事务:   redo恢复已提交事务,每次事务提交将日志持久化   undo回滚操作,每次事务提交将数据持久化,逻辑的恢复数据修改前的状态,不是物理恢复。