mysql的存储引擎

·  阅读 132

一、什么是存储引擎

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。

存储引擎这个概念似乎只有mysql有,存储引擎不同,mysql呈现出来的特性也不同,适用场景就不同。其他数据库,没有听说过有存储引擎这个概念。但应该也有类似的机制。比如oracle、sql server都有OLTP(联机事务处理)、OLAP(联机分析处理)两种类型,分别适用于业务系统应用,数据仓库,可在安装时进行选择。

二、mysql的常见存储引擎

mysql的存储引擎种类繁多,五花八门。像oracle、sql server的类型是在安装时候就要指定,之后不能再改。但mysql不同,它可以同时存在多种存储引擎,这个表用这种存储引擎,那个表用另一种,而且表的存储引擎还可以修改,问你死未。由于存储引擎涉及数据库不同的存储机制,表选择不同的存储引擎,可以得到不同的效果,如较高的性能,体现了灵活的一面。mysql确实是数据库界的一个异类,数据库中的战斗鸡。

mysql常用的存储引擎有以下几种:

1、innoDB
mysql默认的存储引擎。

最大特点是支持事务(难道支持事务不是数据库的标配吗?);支持外键(我去,难道不是标配吗?);它支持提交、回滚和紧急恢复功能来保护数据(竟无语凝噎)。它还支持行级锁定。当在多用户环境中使用时,它的“一致非锁定读取”提高了性能(就是共享锁吧?)。它将数据存储在集群索引中,从而减少了基于主键的查询的I/O。

可见,选择innoDB,让mysql看上去像一个正常的数据库。

使用MyISAM引擎创建数据库,将产生3个文件。文件的名字以表名字开始,扩展名之处文件类型:frm文件存储表定义、数据文件的扩展名为.MYD(MYData)、索引文件的扩展名时.MYI(MYIndex)

2、myISAM
该存储引擎管理非事务性表,提供高速存储和检索,支持全文搜索。

MyISAM基于ISAM存储引擎,并对其进行扩展。ISAM(Indexed Sequential Access Method,索引顺序存取方法)是1964年由BM提出的。类似多叉平衡树,总之就是利于查找。myISAM是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务。

看上去,innoDB是mysql版的OLTP,而myISAM则是OLAP。

3、Memory
mysql版的内存数据库。运行前将数据加载到内存,那必定是极快的了。但好像极少听说它,为啥大家不用它而抢着用Redis呢?估计是它有比较多的限制,比如不支持变长字段,都是定长字段;对表的大小也有要求,不能建立太大的表。突然断电数据就会消失,可靠性不如redis;速度不够redis快;使用比redis复杂;等等。

归根到底可能还是四不像吧。

在这里插入图片描述

三、查看mysql的存储引擎

SHOW ENGINES
复制代码

如果要想查看数据库默认使用哪个引擎,可以通过使用命令:

SHOW VARIABLES LIKE 'storage_engine';
复制代码

查看某个库下所有表使用的存储引擎

show table status from 库名;
复制代码

在这里插入图片描述
查看某个库下指定表使用的存储引擎

show table status from 库名 where name='表名'复制代码

在这里插入图片描述

分类:
代码人生
标签:
收藏成功!
已添加到「」, 点击更改