MySQL数据表存储引擎类型及特性数据表存储引擎类型及特性
数据表类型数据表类型(存储引擎存储引擎)
数据库引擎用于存储、处理和保护数据的核心服务,利用数据库引擎可控制访问权限并快速处理事务,利用数据库引擎创建用
于联机事务处理或联机分析处理数据的关系数据库,包括创建用于存储数据的表和用于查看、管理、保护数据安全的数据库对
象(索引、视图、存储过程)。
常见引擎比对常见引擎比对
特性特性 Myisam InnoDB Memory BDB Archive
存储限制 无限制 64TB 有 没有 没有
事务安全 - 支持 - 支持 -
锁机制 表锁 行锁 表锁 页锁 行锁
B树索引 支持 支持 支持 支持 -
哈希索引 - 支持 支持 - -
全文索引 支持 - - - -
集群索引 - 支持 - - -
数据缓存 - 支持 支持 - -
索引缓存 支持 支持 支持 - -
数据压缩 支持 - - - 支持
空间使用 低 高 N/A 低 非常低
内存使用 低 高 中 低 低
批量插入速度
高 低 高 高 非常高
外键支持 - 支持 - - -
各引擎特点各引擎特点
Myisam
mysql默认存储引擎,在磁盘上存储成三个文件.frm(存储表定义).MYD(MYData存储数据)。MYI(MYIndex存储索引);
没有事务支持,不支持行锁外键,因此当insert、update会锁定整个表,效率会低一些,MyIASM中存储了行数,如果表的读
操作远大于写且不需要事务,MyISAM优选。
索引
1.MyISAM引擎索引结构为B+Tree,其中B+Tree的数据域存储的为实际数据地址即索引和实际数据分开即非聚集索引。
2.如图主键索引和辅助索引结构一直只不过主键索引要求key唯一。
3.MyISAM中索引检索算法首先安装B+Tree搜索算法搜索索引,如果key存在,则取出data域的值,然后以data域的值为地
址,读取相应数据记录。
Innodb
提供了对数据库ACID事务支持并实现SQL标准的四种隔离级别,提供行级锁和外键约束。Mysql运行时Innodb会在内存中建
立缓冲池用于缓冲数据和索引,该引擎不支持fulltext类型索引且没有保存表的行数,select count(*) from table 血药扫全表。