MySQL基于存储引擎的一个解决方案
官方的存储引擎
不支持事物:MyISAM, Memory, Archive(只写,不允许修改删除,日志审计)
锁的粒度:Innodb,NDB 行级锁
是否支持压缩
innodb 5.1.37引入innodb plugin 这个开支持压缩
myisam 5.6开始支持英语全文搜索
Innodb 5.6 开始支持英语全文搜索
批量写的速度
MyISAM,Memory的批量写入比较快
Innodb的Bulk insert (load data) 在5.7之前没有MyISAM,Memory快
原因是因为不支持批量更新索引
5.7之后改善
恢复到某个点 binlog
TokuDB
带压缩支持高速写入的一个引擎
Innodb/Tokudb压缩比是10:1
innodb表每秒2万
Tokudb可以达到4W
tokudb的insert特别快
percona enterpise
Percona MySQL 5.6 包含了TokuDB
MariaDB 中也含的有Tokudb
engine=Tokudb;
Percona Server TokuDB做为他的一个默认引擎
缺点
Tokudb不适合update多的场景
tokudb表20G
update col2=xxx ;
表由原来的20G表变成40G了
多引擎混用注意join
会形成大量移植表不推荐2种不同引擎join
MySQL不适合做OLAP?
Infrobright/InfiniDB
MySQL 5.1的时间都出现了
group ,order ,count之类聚集函数
OLAP 里的表,很多都是宽表
统计类的库(OLAP)一张表好几百列
针对业务去选择引擎
常用推荐:InnoDB
如果有大数据写入批量读取的操作Tokudb
针对OLAD可以考虑使用InfiniDB/Infrobright
推荐研究: InfiniDB,完全开源
infrobright 分企业版和社区版,社区版只支持load data操作
如果对数据量小,要求速度,无持久化要求:Memory
拒绝选用MyISAM
-
只能用单个cpu
-
内存只能用到4G
-
内存里只有索引(B-tree)
-
并发能力差