一,基础
1,插件式存储引擎,允许第三方组织,根据其api来设计,很多功能需要依赖引擎支持,比如事务
2, 5.5以后默认为innodb,之前为myISAM,innodb支持事务,myISAM不支持
3,存储引擎是表级别的概念,同一个库不建议多个引擎
二,InnoDB
1,处理大量的短期事务
2,数据存储于"表空间(table space)"中
3,所有InnoDB表的数据放置于同一个表空间中 datadir 下 ibddata(多个)
4,每个表单独使用一个表空间存储表的数据和索引 innodb_file_per_table = ON(3,4建议选择4,建议开启此项)
5,每个表使用单独表空间时,数据文件(数据和索引):tb1_name.ibd
#例如
[root@node1 mysql]# ls mydb/
db.opt t1.frm t1.ibd t2.frm t2.ibd
#frm 表格式定义文件
#ibd 数据文件
6,基于mvcc机制,并发控制,支持较高并发,支持所有的四个事务隔离级别,默认级别为REPEATABLE READ,通过间隙锁仿制幻读的出现
7,使用聚集索引,支持自适应hash索引
8,在MariaDB(XtraDB) 是对于Innodb大量改进后,整合社区的力量,有percona提供,虽然显示为innodb 其实为XtraDB,开源
9,性能:预计操作,自适应hash,插入缓存区
10,备份:支持热备,(xtrabacup)
11,锁粒度:行级别锁
12,崩溃后安全恢复
三,MyISAM
1,支持全文索引(FULLTEXT index),压缩,空间函数,不支持事务
2,锁粒度:表级别锁
3,崩溃后无法安全恢复
4,在mariadb中对其进行改进为Aria,支持崩溃后恢复
5,使用场景:只读(写较少),表较少,可以接受长时候恢复操作
6,文件:.frm 表格式定义,MYD:数据文件,MYI:索引文件
7,支持压缩表
ps:查看表使用的引擎,show status table;
ps:行格式:dynamic,fixed,compressed,compact,redundent
四,其他存储引擎
1,CSV:将普通的CSV(字段通过逗号分隔)作为mysql表使用,方便不同数据库软件中导入导出
2,MRG_MYISAM:将多个MyISAM表合并成一个虚表
3,BLACKHOLE:类似于/dev/null 多级级联复制时有用
4,MEMORY:存内存,适用临时表,中间数据,数据不关键的,支持哈希索引,表级锁,mysql临时表默认为memory,如果临时表空间不够,则会存储在磁盘上,导致性能下降,可以调整临时表空间大小。
5,PERFORMANCE_SCHENA:伪存储引擎,数据为mysql运行产生的数据,如果mysql没开启,此表为空
6,ARCHIVE:只支持select和insert,支持行级锁和专用缓存区,归档可以使用
7,FEDERATED:用于访问其他远程mysql服务器一个代理,他通过创建一个到远程MYSQL服务器的客户端连接,并将查询传输到远程服务器执行,而后完成数据存取,在MariaDB中实现的为FederatedX
五,MariaDB支持的其他存储引擎
1,OQGraph
2,SphinxSE
3,TokuDB
4,Cassandra
5,CONNECT
6,SQUENCE