1
、
InnoDB
存储引擎(常见)
InnoDB
是
MySQL
的默认事务型引擎,它被设计用来处理大量的短期
(short-lived)
事务。
除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑
InnoDB
引擎。行级
锁,适合高并发情况
2
、
MyISAM
存储引擎
MyISAM
提供了大量的特性,包括全文索引、压缩、空间函数
(GIS)
等,但
MyISAM
不支
持事务和行级锁
(myisam
改表时会将整个表全锁住
)
,有一个毫无疑问的缺陷就是崩溃后
无法安全恢复。
3
、
Memory
引擎
如果需要快速地访问数据,并且这些数据不会被修改,重启以后丢失也没有关系,那么使
用
Memory
表是非常有用。
Memory
表至少比
MyISAM
表要快一个数量级。
(
使用专业的
内存数据库更快,如
redis)
4.InnoDB
和
MyISAM
的区别:
(
1
)事务:
InnoDB
支持事务
,
而
MyISAM
不支持
(
2
)外键:
InnoDB
支持外键
,
而
MyISAM
不支持
(
3
)锁:
MyISAM
只支持表锁,即使操作一条数据记录也会锁住整个表,不适合高并发
的操作;
InnoDB
支持行锁,操作一条数据记录时只锁住一行,不会对其他行产生影响
(
4
)缓存:
MyISAM
只缓存索引,不缓存真实数据;
InnoDB
不仅缓存索引还缓存真实数据,对内存的要求比较高,内存的大小对性能有决定
性影响
(
5
)索引的实现不同:
MyISAM
和
InnoDB
都支持
B+
树索引,但是实现方式有所不同。
MyISAM: MyISAM
引擎使用
B+Tree
作为索引结构,叶节点的
data
域存放的是数据记
录的地址。
MyISAM
的索引方式也叫做“非聚集”的。因此,
MyISAM
索引文件和数据文件
是分离的
**
,
**
索引文件仅保存数据记录的地址。
1
)主索引和辅助索引:在
MyISAM
中,主索引和辅助索引(
Secondary key
)在结构
上没有任何区别,只是主索引要求
key
是唯一的,而辅助索引的
key
可以重复。因此,
MyISAM
中索引检索的算法为首先按照
B+Tree
搜索算法搜索索引,如果指定的
Key
存在,
则取出其
data
域的值,然后以
data
域的值为地址,读取相应数据记录。
InnoDB: InnoDB
也使用
B+Tree
作为索引结构,但具体实现方式却与
MyISAM
截然不
同。
评论