SHOW ENGINES;#查看mysql上面全部的存储引擎
下面主要讲解Innodb & MyIsam
1.数据结构
a.Innodb 数据,索引,表结构都存在一个.ibd文件里
b.MyIsam在磁盘上存储 分三个文件存储,MYD (数据)、MYI(索引)、FRM(sdi)(表结构)
2.事务
a.Innodb支持事务,回滚,对于有update ,delete操作的表,效率更好
b.MyIsam不支持事务,在5.6及以后都是默认innodb存储引擎,对于大量select操作的,效率更高
3.锁
a.Innodb支持行级锁
b.MyIsam是锁全表
4.主键
a.Innodb必须要有主键,没有的话就会自动生成一个6字节的主键,但是对用户不可见,支持外键
b.MyIsam可以没有主键,不支持外键
5.全表行数
a.Innodb不存储总行数,select count(*) 是进行全表扫描
b.MyIsam用一个变量保存了表的总行数(不能有where条件)
6.聚簇索引
a.Innodb 的主键索引就是聚簇索引(叶子节点会存储数据行),通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。
b.MyIsam引擎的索引都不是聚簇索引,在查询时至少需要进行一次的回表查询,其执行的过程:先通过索引表查询到索引对应该行的物理地址,然后去读该物理地址的值
7.恢复
a.Innodb 内存结构中有log buffer,当有更新的时候,先写入log,并更新到内存,innodb会在空闲的时候更新磁盘。有了 redo log(是 InnoDB 引擎特有的),InnoDB 就可以保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为 crash-safe。
redo log 是物理日志,记录的是“在某个数据页上做了什么修改”;
bin log 是逻辑日志,记录的是这个语句的原始逻辑,比如“给 ID=2 这一行的 c 字段加 1 ”。
b.MyIsam 不能恢复
标签:存储,log,索引,Innodb,MyIsam,Mysql,主键 From: https://www.cnblogs.com/lenle29/p/16621125.html