MySQL常见存储引擎有:MyISAM、INNODB和MEMORY
MyISAM的特点:存储表分为三个文件frm(表结构)、MYD(表数据)、MYI(表索引),所占空间小,速度快,不支持事务和行级锁。
INNODB特点:所有的表都保存在同一个数据文件(表空间)中,支持事务和行级锁yiyi及外键,但是加载数据速度慢。
MEMORY的特点:直接在内存中创建表,数据存储在内存中。
INNODB与MyISAM的区别:
1.存储结构:MyISAM存储表分为三个文件frm(表结构)、MYD(表数据)、MYI(表索引),而INNODB所有数据存储在一个表空间中(可以是一个文件也可以使多个)。
2.事务支持:MyISAM不支持事务,而INNODB支持事务,具有事务、回滚和恢复的事务安全。
3.外键和主键:MyISAM不支持外键,而INNODB支持外键。MyISAM允许没有主键,但是INNODB必须有主键,若未指定主键,会自动生成长度为6字节的主键。
4.锁:MyISAM只支持表级锁,而INNODB支持行级锁,具有比较好的并发性能,但是行级锁只有在where 子句是对主键筛选才生效,非主键where会锁全表
5.索引:MyISAM使用B+树作为索引结构,叶节点保存的是存储数据的地址,主索引key值唯一,副主索引key可以重复,二者在结构上相同。INNODB也是用B+树作为索引结构,数据表本身就是按照b+树组织,叶节点key值为数据记录的主键,data域为完整的数据记录,辅助索引data域保存的是数据记录的主键
MySQL数据库索引:
创建索引的方法:
创建标的时候创建:
create teble t{
Index index_name(colum_name);
}
直接创建:
create idnex index_name on table_name (colum_name)
修改表结构方式:
alter table table_name add index index_name (colum_name)
索引类型:
普通索引:没有任何限制
唯一索引:key值必须唯一,但是允许为null
主键索引:key值必须唯一,且不允许为null
组合索引:多个字段的组合作为索引的key值,遵循最左原则,范围查询及其右边所有列均布使用索引
聚集索引和非聚集索引:
聚集索引:数据库表中数据的物理顺序与索引的顺序相同。一张数据表只有一个聚集索引。对于聚集索引,使用自增主键作为索引比使用UUID更加高效。原因是,使用自增主键,主键的大小与插入的顺序是一致的,从而使得索引的叶子节点的顺序与数据写入顺序一致,而使用UUID作为主键时,主键是无序的,InnoDB需要对主键的物理顺序进行排序,增加了IO开销。
MySQL存储引擎与索引详解
4405

被折叠的 条评论
为什么被折叠?



