• 什么是存储引擎?
  • MySQL存储引擎种类
    • MyISAM 引擎
  • InnoDB引擎
  • 存储引擎操作
    • 查看存储引擎
    • 存储引擎的变更
  • 修改默认引擎

什么是存储引擎?

与其他数据库例如Oracle 和SQL Server等数据库中只有一种存储引擎不同的是,MySQL有一个被称为“Pluggable Storage Engine Architecture”(可替换存储引擎架构)的特性,也就意味着MySQL数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。MySQL数据库在实际的工作中其实分为了语句分析层和存储引擎层,其中语句分析层就主要负责与客户端完成连接并且事先分析出SQL语句的内容和功能,而存储引擎层则主要负责接收来自语句分析层的分析结果,完成相应的数据输入输出和文件操作。简而言之,就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

MySQL存储引擎种类

存储引擎 说明
MyISAM 高速引擎,拥有较高的插入,查询速度,但不支持事务
InnoDB 5.5版本后MySQL的默认数据库,支持事务和行级锁定,比MyISAM处理速度稍慢
ISAM MyISAM的前身,MySQL5.0以后不再默认安装
MRG_MyISAM(MERGE) 将多个表联合成一个表使用,在超大规模数据存储时很有用
Memory 内存存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。只在内存上保存数据,意味着数据可能会丢失
Falcon 一种新的存储引擎,支持事物处理,传言可能是InnoDB的替代者
Archive 将数据压缩后进行存储,非常适合存储大量的独立的,作为历史记录的数据,但是只能进行插入和查询操作
CSV CSV 存储引擎是基于 CSV 格式文件存储数据(应用于跨平台的数据交换)

接下来我们就介绍两种在实际开发中使用最多的两种引擎【MyISAM】和【InnoDB】。

MyISAM 引擎

这种引擎是MySQL最早提供的。这种引擎又可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种:

  • 静态MyISAM:如果数据表中的各数据列的长度都是预先固定好的,服务器将自动选择这种表类型。因为数据表中每一条记录所占用的空间都是一样的,所以这种表存取和更新的效率非常高。当数据受损时,恢复工作也比较容易做。
  • 动态MyISAM:如果数据表中出现varchar、xxxtext或xxxBLOB字段时,服务器将自动选择这种表类型。相对于静态MyISAM,这种表存储空间比较小,但由于每条记录的长度不一,所以多次修改数据后,数据表中的数据就可能离散的存储在内存中,进而导致执行效率下降。同时,内存中也可能会出现很多碎片。因此,这种类型的表要经常用optimize table 命令或优化工具来进行碎片整理。
  • 压缩MyISAM:以上说到的两种类型的表都可以用myisamchk工具压缩。这种类型的表进一步减小了占用的存储,但是这种表压缩之后不能再被修改。另外,因为是压缩数据,所以这种表在读取的时候要先时行解压缩。

当然不管是何种MyISAM表,目前它都不支持事务,行级锁和外键约束的功能,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。MyISAM存储引擎特别适合在以下几种情况下使用:

  • 选择密集型的表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。
  • 插入密集型的表。MyISAM的并发插入特性允许同时选择和插入数据。

MyISAM表是独立于操作系统的,这说明可以轻松地将其从Windows服务器移植到Linux服务器;每当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表名。 例如我创建了一个【test】表,那么就会生成以下三个文件:

文件名 说明
test.frm 存储表定义
test.MYD 存储数据
test.MYI 存储索引

InnoDB引擎

InnoDB表类型可以看作是对MyISAM的进一步更新产品,它提供了事务、行级锁机制和外键约束的功能。InnoDB的表需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
使用InnoDB是最理想的选择:

  • 更新密集的表:InnoDB存储引擎特别适合处理多重并发的更新请求。
  • 事务:InnoDB存储引擎是支持事务的标准MySQL存储引擎。
  • 自动灾难恢复:与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。
  • 外键约束:MySQL支持外键的存储引擎只有InnoDB。
  • 支持自动增加列AUTO_INCREMENT属性。

存储引擎操作

查看存储引擎

想要查看我们的数据表使用了什么存储引擎,我们就需要使用到我们以前已经介绍过的【show】命令,语法如下:

SHOW CREATE TABLE 表名;

例如我们查看我们之前创建好的【user】表:

SHOW CREATE TABLE user;
+——-+—————————————————————————————————————————————————————————————————————————-+
| Table | Create Table |
+——-+—————————————————————————————————————————————————————————————————————————-+
| user | CREATE TABLE user (
userId char(5) CHARACTER SET latin1 NOT NULL,
name varchar(30) DEFAULT NULL,
sex char(1) CHARACTER SET latin1 DEFAULT ‘0’,
PRIMARY KEY (userId)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+——-+—————————————————————————————————————————————————————————————————————————-+
1 row in set (0.02 sec)

就可以看到【 ENGINE】显示我们使用的引擎为【MyISAM】

存储引擎的变更

变更我们存储表的存储引擎将使用到的是我们前面使用过的【ALTER】命令,语法如下:

ALTER TABLE 表名 ENGINE=新引擎;

例如,我们将【user】表的引擎更改为【InnoDB】:

mysql> ALTER TABLE user ENGINE = InnoDB;
Query OK, 7 rows affected (0.50 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> SHOW CREATE TABLE user;
+——-+—————————————————————————————————————————————————————————————————————————-+
| Table | Create Table |
+——-+—————————————————————————————————————————————————————————————————————————-+
| user | CREATE TABLE user (
userId char(5) CHARACTER SET latin1 NOT NULL,
name varchar(30) DEFAULT NULL,
sex char(1) CHARACTER SET latin1 DEFAULT ‘0’,
PRIMARY KEY (userId)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+——-+—————————————————————————————————————————————————————————————————————————-+
1 row in set (0.00 sec)

我们就成功的将【user】表的存储引擎改为了【InnoDB】

修改默认引擎

要使用事务功能,就必须将表设置为InnoDB引擎,有的版本在安装时,是未激活InnoDB引擎的,所以需要我们手动进行激活。首先我们进入MySQL的安装目录,找到my.ini文件。例如,博主使用的是WampServer的集成开发环境,目录如下:

我们右键选择记事本打开后,找到【default-storage-engine】这一行,如图:

将其修改为【default-storage-engine=InnoDB】即可,我们就成功的将默认的引擎修改为【InnoDB】。

这里,我们就讲解完了关于MySQL数据库存储引擎的有关知识,同时也为我们下一步讲解史上最简单MySQL教程详解(进阶篇)之事务处理做好了铺垫,因为要实现事务管理,需要将表的存储引擎更改为【InnoDB】

转载于:https://www.cnblogs.com/newtol/p/10159104.html

史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置相关推荐

  1. 史上最简单MySQL教程详解(进阶篇)之存储过程(一)

    史上最简单MySQL教程详解(进阶篇)之存储过程(一) 史上最简单MySQL教程详解(进阶篇)之存储过程(一) 什么是存储过程 存储过程的作用 如何使用存储过程 创建存储过程 DELIMITER改变分 ...

  2. 史上最简单MySQL教程详解(进阶篇)之索引及失效场合总结

    史上最简单MySQL教程详解(进阶篇)之索引及其失效场合总结 什么是索引及其作用 索引的种类 各存储引擎对于索引的支持 简单介绍索引的实现 索引的设置与分析 普通索引 唯一索引(Unique Inde ...

  3. 史上最简单MySQL教程详解(进阶篇)之视图

    史上最简单MySQL教程详解(进阶篇)之视图 为什么要用视图 视图的本质 视图的作用 如何使用视图 创建视图 修改视图 删除视图 查看视图 使用视图检索 变更视图数据 WITH CHECK OPTIO ...

  4. 史上最简单MySQL教程详解(基础篇)之SQL语句以及预留关键字介绍

    SQL简单介绍 数据操作语句 (Data Manipulation Language,DML) 数据定义语句 (Data Definition Language ,DDL) 数据控制语句 (Data ...

  5. 史上最简单MYSQL教程详解(基础篇)之初识MySQL数据库以及环境配置

    什么是数据库 数据库管理系统 数据库应用程序 数据库的种类 什么是MySQL MySQL数据库有哪些优势 SQL语句 常用术语 MySQL的安装 什么是数据库 数据库通俗的说法就是将数据信息集中起来统 ...

  6. mysql 前沿表设计_史上最简单MySQL教程详解(基础篇)之表的维护和改造

    表结构修改 在我们实际的开发的过程,随着开发的深入,会发现我们事先设计好的表可能已经不再适合,就会设计到对表的修改和改造.这里我就向大家介绍一下一些常用的方法和情况.这里我们使用的是之前在中就已经使用 ...

  7. mysql-win安装教程,WINDOWS下安装MYSQL教程详解

    1.下载安装包 2.配置环境变量 2.1 解压所下载的压缩包 2.2 环境变量 win 10 电脑 这么进去 3.生成data文件 在你解压的目录下,eg:F:\Program Files\mysql ...

  8. 史上最小白之BM25详解与实现

    史上最小白之BM25详解与实现 原理 BM25算法是一种计算句子与文档相关性的算法,它的原理十分简单:将输入的句子sentence进行分词,然后分别计算句子中每个词word与文档doc的相关度,然后进 ...

  9. 史上最小白之Transformer详解

    1.前言 博客分为上下两篇,您现在阅读的是下篇史上最小白之Transformer详解,在阅读该篇博客之前最好你能够先明白Encoder-Decoder,Attention机制,self-Attenti ...

最新文章

  1. 关于nginx反向代理产生大量连接问题解决。
  2. linux教程 nfs,[原创]linux视频教程之NFS
  3. kmp算法详解php,php中字符串匹配KMP算法实现例子
  4. 电路 | 稳压电路设计
  5. 心电信号去噪(part4)--经验模态分解法(EMD)
  6. AMD迎接变革:加速OpenCL的未来
  7. 项目搭建Nacos及遇到问题解决
  8. 信息学奥赛一本通 1345:【例4-6】香甜的黄油 | 洛谷 P1828 [USACO3.2]香甜的黄油 Sweet Butter
  9. ubuntu安装hadoop2.9.2
  10. Git命令学习总结(-)
  11. [设计模式-结构型]桥接(Bridge )
  12. C#进行MapX二次开发之图层操作
  13. 如何查看SharePoint Server的版本信息
  14. laravel常用拓展库
  15. java 人物头像识别
  16. 宋宝华——Linux设备驱动开发详解:基于最新的Linux 4.0内核(第一章)
  17. 从应用工程师的角度再谈车载 Android 系统
  18. 分子动力学理论部分总结(未整理完)
  19. python等比例压缩图片_python使用pil进行图像处理(等比例压缩、裁剪)实例代码
  20. Python -运用for语句输出(九九乘法表)

热门文章

  1. 陷阱:C++模块之间的”直接依赖“和”间接依赖“与Makefile的撰写
  2. Android 第一个OpenGL ES程序
  3. 反垃圾邮件,需要全面了解各种方案
  4. jquery attr()和prop()方法的区别
  5. 如何具备无坚不摧的意志力
  6. freemind在ubuntu20.04下面的安装
  7. NIFI的ERROR报错信息如何清空
  8. hadoop的三大核心组件之HDFS和YARN
  9. 什么是单页应用(转)
  10. 语音识别(四)——DTW, Spectrogram, Cepstrum Analysis