xl_echo编辑整理,交流学习请加1280023003 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!
在诸多数据库管理系统中,数据引擎支持情况不一,并且引擎的种类也有很多,所以很多数据库管理系统在引擎上都有一些自己的差异。MySQL的核心就是存储引擎,并且MySQL提供了多个不同的存储引擎。包括处理事务安全表的引擎和处理非事务安全表的引擎。
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。 --引自百度
从以上的话我们也可以看出,在MySQL中我们要存储数据,并不是统一规范式的使用某一个引擎,而是可以针对我们需要需要的数据使用某些引擎(这里主要以表为单位)。很多人在创建表时候都会去使用一个数据库引擎InnoDB,该引擎是数据库事务型首选引擎。在大部分时候都会用到,所以很多人会忽略。但是这很好的证明了,我们创建表可以选择引擎。
使用InnoDB创建表示例:
CREATE TABLE `product` (
`product_id` varchar(32) NOT NULL,
`product_name` varchar(64) NOT NULL COMMENT '商品名称',
`product_price` decimal(8,2) NOT NULL COMMENT '商品价格'
PRIMARY KEY (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';
MySQL除了InnoDB还有那些引擎?
查看当前提供支持的引擎
SHOW ENGINES
从显示的结果我们可以看到,MySQL支持的引擎总共有8种。
InnoDB(存储引擎)
事务型数据库的首选引擎,支持ACID事务,支持行级锁定。MySQL5.5之后InnoDB就成为了默认引擎。它的主要特征有:
- 行锁设计,并提供了有效的提交、回滚和数据恢复的功能。
- 支持MVCC(多版本并发控制)
- 支持外键完整性约束
- 对于大量数据有着高效的性能
MyISAM(存储引擎)
MyISAM是默认存储引擎(Mysql5.1前)。它基于更老的ISAM代码,但有很多有用的扩展。MyISAM拥有较高的插入、查询速度,但不支持事务。它的主要特征有:
- 对于大文件有很好的支持(如:存储全国区域信息)
- 当把删除和更新及插入混合的时候,动态尺寸的行更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块来自动完成。
- NULL值被允许在索引的列中。这个占每个键的0-1个字节。
- 所有数字键值以高字节为先被存储以允许一个更高地索引压缩。
- BLOB和TEXT列可以被索引
MEMORY(存储引擎)
memory存储引擎是MySQL中的一类特殊的存储引擎。其使用存储在内存中的内容来创建表,而且所有数据也放在内存中。这些特性都与InnoDB,MyISAM存储引擎不同。它的主要特征有:
- memory不支持BLOB或TEXT
- 可以在一个memory表中有非唯一键
- memory存储引擎执行hash和btree索引
MRG_MYISAM(存储引擎)
引用MySQL官方文档中的一段话:MERGE存储引擎,也被认识为MRG_MyISAM引擎,是一个相同的可以被当作一个来用的MyISAM表的集合."相同"意味着所有表同样的列和索引信息.你不能合并列被以不同顺序列于其中的表,没有恰好同样列的表,或有不同顺序索引的表.而且,任何或者所有的表可以用myisampack来压缩
BLACKHOLE(存储引擎)
MySQL在5.x系列提供了Blackhole引擎–“黑洞”.其作用正如其名字一样:任何写入到此引擎的数据均会被丢弃掉,不做实际存储;Select语句的内容永远是空。和Linux中的 /dev/null 文件完成的作用完全一致。
CSV(存储引擎)
MYSQL 5.0及以上版本支持CSV存储引擎。CSV是MYSQL中相对比较简单而且方便的存储引擎了,它存储数据直接会成为.csv格式的文件。
ARCHIVE(存储引擎)
这个存储引擎基本上用于数据归档;它的压缩比非常的高,存储空间大概是innodb的10-15分之一所以它用来存储历史数据非常的适合,由于它不支持索引同时也不能缓存索引和数据,所以它不适合作为并发访问表的存储引擎。
PERFORMANCE_SCHEMA(存储引擎)
MySQL 5.5开始新增一个数据库:PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数