返回顶部
首页 > 资讯 > 数据库 >简单了解MySQL存储引擎
  • 748
分享到

简单了解MySQL存储引擎

MySQL存储引擎MySQL引擎 2022-05-15 16:05:47 748人浏览 薄情痞子
摘要

1. MySql体系结构 在介绍存储引擎之前先来介绍下Mysql的体系结构,以便大家知道存储引擎在mysql整个体系中处于什么位置。下图是官方提供的一张架构图: Mysql体系结构图 从上图可以发现,MySQL由以

1. MySql体系结构

在介绍存储引擎之前先来介绍下Mysql的体系结构,以便大家知道存储引擎在mysql整个体系中处于什么位置。下图是官方提供的一张架构图:

Mysql体系结构图

从上图可以发现,MySQL由以下几部分组成:

  • 连接池组件
  • 管理服务和工具组件
  • SQL接口组件
  • 查询分析器组件
  • 优化器组件
  • 缓冲(Cache)组件
  • 插件式存储引擎
  • 物理文件

MySQL数据库区别于其他数据库的最重要的一个特点就是其插件式的表存储引擎,从上图中也可以看到,MySql支持很多种存储引擎。需要特别注意的是,存储引擎是基于表的,而不是数据库。

2. MySql存储引擎

插件式存储引擎的好处是:能够根据具体的应用的特点选择不同的存储引擎。下面是几种MySQL常用的存储引擎。

2.1 InnoDB存储引擎

InnoDB存储引擎支持事务,其设计目标主要面向在线事务处理(OLTP)的应用。其特点是行设计、支持外键,并支持类似于oracle的非锁定读,即默认读取操作不会产生锁。从MySQL数据库5.5.8版本开始,InnoDB存储引擎是默认的存储引擎。

InnoDB通过使用多版本并发控制(mvcC)来获得高并发性,并且实现了SQL标准的4种隔离级别,默认为REPEATABLE级别。同时,使用一种被称为next-key locking的策略来避免幻读(phantom)现象的产生。除此之外,InnoDB储存引擎还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能。

对于表中数据的存储,InnoDB存储引擎采用了聚集(clustered)的方式,因此每张表的存储都是按主键的顺序进行存放。如果没有显式地在表定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的ROWID,并以此作为主键。

2.2 MyISAM存储引擎

MyISAM存储引擎不支持事务、表锁设计,支持全文索引,主要面向一些OLAP数据库应用。此外,MyISAM存储引擎的另一个与众不同的地方是它的缓冲池只缓存(cache)索引文件,而不缓冲数据文件,这点和大多数的数据库都非常不同。从MySQL 5.0版本开始,MyISAM默认支持256TB的单表数据,这足够满足一般应用需求。

2.3 Memory存储引擎

Memory存储引擎(之前称HEAP存储引擎)将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。它非常适合用于存储临时数据的临时表,以及数据仓库中的纬度表。Memory存储引擎默认使用哈希索引,而不是我们熟悉的B+树索引。

虽然Memory存储引擎速度非常快,但在使用上还是有一定的限制。比如,只支持表锁,并发性能较差,并且不支持TEXT和BLOB列类型。最重要的是,存储变长字段(varchar)时是按照定常字段(char)的方式进行的,因此会浪费内存。

此外有一点容易被忽视,MySQL数据库使用Memory存储引擎作为临时表来存放查询的中间结果集(intermediate result)。如果中间结果集大于Memory存储引擎表的容量设置,又或者中间结果含有TEXT或BLOB列类型字段,则MySQL数据库会把其转换到MyISAM存储引擎表而存放到磁盘中。之前提到MyISAM不缓存数据文件,因此这时产生的临时表的性能对于查询会有损失。

2.4 Archive存储引擎

ArcHive存储引擎只支持INSERT和SELECT操作,从MySQL 5.1开始支持索引。Archive存储引擎使用zlib算法将数据行(row)进行压缩后存储,压缩比一般可达1∶10。正如其名字所示,Archive存储引擎非常适合存储归档数据,如日志信息。Archive存储引擎使用行锁来实现高并发的插入操作,但是其本身并不是事务安全的存储引擎,其设计目标主要是提供高速的插入和压缩功能。

当然MySql还支持很多其他的存储引擎,这边不一一列举了。

3. 存储引擎对比整理

存储引擎可以理解为表的存储结构,每种存储引擎都支持不同的特性。MySQL支持插件式的存储引擎,可以为每张数据表指定不同的存储引擎。常用的存储引擎的特点整体如下:

我们也可以使用下面命令查看当前数据库支持哪些存储引擎:


-- 查看支持的存储引擎
show engines;

下面对最常用的三种存储引擎做下简单总结介绍:

  • InnoDB:MySQL默认的存储引擎,支持事务、支持行级锁和表级锁、支持各类索引、支持外键,高版本的MySQL还支持全文索引,但是批量数据插入的效率较低;
  • MyISAM:具有较高的数据插入效率和数据查询速度,支持全文索引,但是不支持数据库事务,不支持行级锁,只支持表级锁;
  • MEMORY:使用这个存储引擎时,会将表中的数据加载到内存中,查询很快,但是对内存要求较高。

所以我们应该根据应用的具体需求选择合适的存储引擎,而不是不加思考的都选择默认存储引擎(INNODB)。

如果要提供提交、回滚和恢复的事务安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个很好的选择。如果数据表主要用来插入和查询记录,则MyISAM引擎提供较高的处理效率。如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存的MEMORY引擎中,MySQL中使用该引擎作为临时表,存放查询的中间结果。如果只有INSERT和SELECT操作,可以选择Archive引擎,Archive存储引擎支持高并发的插入操作,但是本身并不是事务安全的。Archive存储引擎非常适合存储归档数据,如记录日志信息可以使用Archive引擎。

4. 参考

《MySQL技术内幕》

以上就是简单了解MySQL存储引擎的详细内容,更多关于MySQL存储引擎的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 简单了解MySQL存储引擎

本文链接: https://lsjlt.com/news/9662.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 简单了解MySQL存储引擎
    1. MySql体系结构 在介绍存储引擎之前先来介绍下MySql的体系结构,以便大家知道存储引擎在MySql整个体系中处于什么位置。下图是官方提供的一张架构图: MySQL体系结构图 从上图可以发现,MySQL由以...
    99+
    2022-05-15
    MySQL 存储引擎 MySQL 引擎
  • 简单认识MYSQL的MyISAM 存储引擎
    下面一起来了解下简单认识MYSQL的MyISAM 存储引擎,相信大家看完肯定会受益匪浅,文字在精不在多,希望简单认识MYSQL的MyISAM 存储引擎这篇短内容是你想要的。 特点> 不支持事...
    99+
    2024-04-02
  • 一起了解了解MySQL存储引擎
    目录前言一、MySQL主要存储引擎:二、实例介绍它们(不同的存储引擎在存储表的时候的异同点)前言 在日常生活中文件格式有很多种,并且针对不同的文件格式会有对应不同存储方式和处理机制(...
    99+
    2024-04-02
  • 简述MySQL InnoDB存储引擎
    前言: 存储引擎是数据库的核心,对于 MySQL 来说,存储引擎是以插件的形式运行的。虽然 MySQL 支持种类繁多的存储引擎,但最常用的当属 InnoDB 了,本篇文章将主要介绍 InnoDB 存储引擎相关知识。 ...
    99+
    2022-05-19
    MySQL 存储引擎 MySQL InnoDB
  • 了解innodb存储引擎
    相比较myisam存储引擎。innodb支持事务,行锁。 MyISAM 和InnoDB 讲解  InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体...
    99+
    2024-04-02
  • 存储引擎简介
    一.存储引擎简介 1、文件系统: 1.1 操作系统组织和存取数据的一种机制。 1.2 文件系统是一种软件。 2、文件系统类型:ext2 3 4 ,xfs 数据(centos6 ext 4 centos7 xfs) 2.1 不管使用...
    99+
    2019-09-01
    存储引擎简介
  • 【超简单】MySQL存储引擎的选择与配置
    【超简单】MySQL存储引擎的选择与配置 存储引擎简介 MySQL中的数据用各种不同的技术存储在文件(或内存)中。每一种技术都使用不同的存储机构,索引技巧,锁定水平并且最终提供广泛的不同的功能和能力。通过选...
    99+
    2024-04-02
  • MYSQL存储引擎
    存储引擎 InnoDB      (1) InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这些功能增加...
    99+
    2021-04-17
    MYSQL存储引擎
  • Mysql--存储引擎
      1.文件系统: 1.1 操作系统组织和存取数据的一种机制。 1.2 文件系统是一种软件。 2.文件系统类型:ext2 3 4 ,xfs 数据 2.1 不管使用什么文件系统,数据内容不会变化 2.2 不...
    99+
    2021-09-03
    Mysql--存储引擎
  • MySQL 存储引擎
      存储引擎 DBMS使用存储引擎进行数据的创建、查询、更新、删除操作。 不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。 MySQL提供了多种存储引擎,最常见的有3种。    ...
    99+
    2015-11-16
    MySQL 存储引擎
  • MySQL 存储引擎
    简介:存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。    常见分类有:InnoDB、MyISAM、Memory等; 一、InnoDB  ...
    99+
    2017-04-10
    MySQL 存储引擎 数据库入门 数据库基础教程 数据库 mysql
  • mysql-存储引擎
    存储引擎 完整的建表语句: CREATE TABLE dept ( DEPTNO int(2) NOT NULL, DNAME varchar(14) DEFAULT NULL, LOC varchar(13) DEF...
    99+
    2020-03-17
    mysql-存储引擎
  • MYSQL——存储引擎
       MYSQL的存储引擎1   MYSQL可以将数据以不同的技术存储在文件和内存中,这种技术就成为存储引擎2   每一种存储引擎使用不同的存储机制、索引技巧、锁定水...
    99+
    2024-04-02
  • Mysql -存储引擎
    1、存储引擎:是表级别的类型。 2、查看表存储引擎的方法: (1)、mysql> show table status in mydb where name='classes'\G; 1. ...
    99+
    2024-04-02
  • 【MySQL】存储引擎
    文章目录 1. 前言2. MySQL的体系结构3. 存储引擎简介4. InnoDB介绍5. MyISAM介绍6. Memory7. 存储引擎的选择8. 总结 1. 前言 存储引擎是 MySQL 的核心组件之一,负责数据的存储和管...
    99+
    2023-08-16
    mysql 数据库 sql
  • MySQL 存储引擎(2)
    首先我们带着下边三个问题来认识存储引擎 存储引擎在MySQL中的作用是什么? MySQL都有哪些存储引擎 SQL又与存储引擎有什么关系? 存储引擎在MySQL中的作用是什么? 顾名思义,存储引擎就是用于存储我们的数据的。在关系型数据库中...
    99+
    2016-06-21
    MySQL 存储引擎(2)
  • mysql federated存储引擎
    通过federated存储引擎建立远程连接表 # 开启federated存储引擎 SHOW ENGINES ; MyISAM YES InnoDB DEFAULT ... FEDERATED YES # 创建...
    99+
    2020-02-03
    mysql federated存储引擎
  • MySQL之存储引擎
    Storage Engine是指表类型,也即在表创建时指明其使用的存储引擎,同一库中不同表可以使用不同的存储引擎,但建议要使用同一种存储引擎 MySQL体系结构 存储引擎 In...
    99+
    2024-04-02
  • MySQL的存储引擎
    1、存储引擎概念 • MySQL中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎 • 存储引擎是MySQL将数据存储在...
    99+
    2023-09-07
    mysql 数据库 java
  • MySQL—存储引擎(上)
    ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️树高千尺,落叶归根人生不易,人间真情 目录 1). 连接层 2). 服务层 ...
    99+
    2023-09-07
    服务器 运维 mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作