MySQL --存储引擎介绍

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

mysql5.6的数据库引擎

从显示的结果我们可以看到,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,主要用于收集数据库服务器性能参数

猜你喜欢

转载自blog.csdn.net/xlecho/article/details/83588553
今日推荐