什么是mysql存储引擎?

author author     2023-03-27     245

关键词:

参考技术A

MySQL 可能是最著名的 关系数据库管理系统 (RDBMS),作为一款免费开源软件开发,最初由 MYSQL AB 公司提供支持,但现在归 Oracle 所有。

在 MySQL 中,用于表的“存储引擎”决定了数据的处理方式。有几种可用的存储引擎,但最常用的是 InnoDB MyISAM

在本文中,我们将了解它们的显着特征以及它们之间的主要区别。

在本教程中,您将学习:

在我们讨论两个主要 MySQL 存储引擎之间的特性和区别之前,先来了解一下什么是存储引擎?

存储引擎,也称为“ 表处理程序 ”,基本上是解释和管理与数据库表的 SQL 查询相关的操作的数据库部分。

在最新版本的 MySQL 中,可以使用“ 可插拔 ”架构来组织和管理存储引擎,存在多种存储引擎,但最常用的两个是 InnoDB MyISAM

要获得我们正在使用的数据库中可用存储引擎的列表,我们所要做的就是发出一个简单的 SQL 查询,因此我们需要做的第一件事就是打开一个 MySQL 交互式提示并使用数据库用户登录及其密码:

如果登录成功,提示将变为mysql>,在这里,我们可以运行我们的 SQL 查询来可视化可用的存储引擎:

执行查询后,我们应该获得类似于以下内容的结果:

在上表中,作为查询结果生成,我们可以通过查看Support每行列中的值轻松了解支持哪些存储引擎,“YES”值表示存储引擎可用,否则“NO”。相反,同一列中的“DEFAULT”值表示相应的引擎(在本例中为 InnoDB)是服务器使用的默认引擎。

Transactions ”和“ Savepoints ”列中存在的值分别表示存储引擎是否支持事务和回滚。正如我们通过查看表可以看到的,只有 InnoDB 引擎可以。

关于存储引擎的信息存在于“ INFORMATION_SCHEMA ”数据库的“ ENGINES ”表中,因此我们也可以发出标准的“SELECT”查询来获取我们需要的数据:

我们将获得与上面看到的相同的结果。

让我们看看两个最常用的存储引擎 InnoDB 和 MyISAM 之间的主要特性和区别是什么。

正如我们已经说过的, InnoDB 是自 MySQL 以来的默认存储引擎5.5。

此存储引擎的一些主要功能如下:

对事务的支持提供了一种安全的方式来执行多个查询以保持数据一致。

当多个修改数据的操作被执行并且我们想要确保它们只有在所有操作都成功并且没有错误发生时才有效时,我们想要使用事务。

典型的处理方式是启动事务并执行查询:如果出现错误,则执行回滚,否则提交更改。

当使用 InnoDB 数据锁定发生在行级别时,因此在事务期间锁定的数据量是有限的。

InnoDB 有两种类型的锁:

一个共享锁允许谁拥有它读取该行的交易,而一个排它锁允许交易执行其修改行的操作,所以要更新或删除数据。

当一个事务在某行上获得共享锁,而另一个事务需要相同的锁类型时,立即授予;但是,如果第二个事务在同一行上请求排他锁,它将不得不等待。

如果第一个事务持有该行的排他锁,则第二个事务将不得不等待该锁被释放以获得共享锁或排他锁。

外键是一个非常重要的特性,因为它们可用于基于表之间的逻辑关系来强制执行数据完整性。想象一下,我们的数据库中有三个表(假设它被称为“testdb”):一个user包含现有用户的job表,一个注册所有可用作业的user_job表,以及一个用于表示用户和用户之间存在的多对多关系的表。作业(一个用户可以有多个作业,多个作业可以与同一个用户关联)。

该user_job表就是所谓的连接表或关联表,因为它的唯一目的是表示用户-工作关联。该表有两列,一个叫user_id和其他job id。表中会存在两个外键约束,强制执行以下规则:user_id列中的值只能引用表id列中的值,列中的user值job_id必须引用表id列中的现有值job.

这将强制执行完整性,因为仅允许现有用户和作业的 ID 存在于关联表中。删除涉及表中一个或多个关联的用户或作业user_job也是不允许的,除非为相应的外键设置了CASCADE DELETE规则。在这种情况下,当删除用户或作业时,它们所涉及的关系也将被删除。

MyISAM 曾经是默认的 MySQL 存储引擎,但已被 InnoDB 取代。使用此引擎时,数据锁定发生在表级别,因此执行操作时锁定的数据更多。

与 InnoDB 不同,MyISAM 不支持事务回滚和提交,因此必须手动执行回滚。MyISAM 和 InnoDB 之间的另一个很大区别是前者不支持外键。MyISAM 更简单,并且在对有限数据集进行读取密集型操作时可能具有优势(有争议)。

在表上使用 MyISAM 时,会设置一个标志,指示该表是否需要修复,例如在突然关闭之后。稍后可以使用适当的工具执行表修复。

如何知道特定表使用了什么存储引擎?我们所要做的就是发出一个简单的查询。

例如,要知道user我们在前面的例子中提到的表使用了什么存储引擎,我们将运行:

注意上面的查询我们使用了G,为了让查询结果垂直显示,优化空间。执行查询后,我们将获得以下结果:

在这种情况下,通过查看“Engine”列中存储的值,我们可以清楚地看到该表使用的是“InnoDB”引擎。获取相同信息的另一种方法是INFORMATION_SCHEMA.TABLES直接查询表:

上面的查询将只返回表使用的引擎:

如果我们稍微更改查询,我们可以获得数据库中所有表名的列表以及它们使用的引擎:

如果我们要为一个表设置一个特定的存储引擎,我们可以在创建时指定它。例如,假设我们正在创建job表,并且出于某种原因我们想要使用 MyISAM 存储引擎。我们将发出以下 SQL 查询:

相反,如果我们想要更改用于已存在表的存储引擎,我们只需要使用ALTERSQL 语句。假设我们要将上一个示例中创建的“job”表所使用的存储引擎更改为 InnoDB;我们会运行:

在本教程中,我们学习了什么是数据库存储引擎,并且我们看到了两个最常用的 MySQL 引擎的主要特性: InnoDB MyISAM

我们看到了如何检查哪些引擎可用、哪些引擎用于表以及如何使用 SQL 查询设置和修改表引擎。

什么是存储引擎以及不同存储引擎特点

  以前一直玩Oracle数据库,整天围着业务需求和执行计划转,刚刚接触Mysql看到存储引擎不慎理解,相应会有与我相同人群存在,所以写文以记之。    首先简单从字面理解,想当是与磁盘打交道的,实际情况也是如此。... 查看详情

mysql存储引擎

mysql存储引擎那么什么是存储引擎呢?存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表... 查看详情

运维面试面试官:mysql存储引擎有哪几种,他们的区别是什么?

...和他们之间的区别?面试者:简历给我吧,我去下一家。什么是存储引擎?官方定义:存储引擎其实就是对于数据库文件的一种存取机制,如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方... 查看详情

mysql学习笔记-存储引擎(代码片段)

...据库的相关数据,包括数据与日志等。二.存储引擎简介什么是存储引擎?存储引擎是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。MySQL5.5之... 查看详情

mysql存储引擎(innodb引擎)(代码片段)

        本篇章主要介绍什么是 MySQL存储引擎?常用的MySQL存储引擎有哪些?以及详细介绍一下目前应用最广泛的InnoDB存储引擎,包括其:逻辑存储结构、架构、事务原理、MVCC等。一、初识 MySQL存储引擎   ... 查看详情

mysql教程详解之存储引擎介绍及默认引擎设置

什么是存储引擎?与其他数据库例如Oracle和SQLServer等数据库中只有一种存储引擎不同的是,MySQL有一个被称为“PluggableStorageEngineArchitecture”(可替换存储引擎架构)的特性,也就意味着MySQL数据库提供了多种存储引擎。用户可... 查看详情

mysql数据库存储引擎详解

参考技术A  存储引擎是什么?  MySQL中的数据用各种不同的技术存储在文件(或者内存)中这些技术中的每一种技术都使用不同的存储机制索引技巧锁定水平并且最终提供广泛的不同的功能和能力通过选择不同的技术你能够获... 查看详情

mysql引擎各个引擎对比介绍

1.什么是存储引擎?      存储引擎类似于录制的视频文件,可以转换成不同的格式,如MP4,avi等格式,而存储在我们的磁盘上也会存在于不同类型的文件系统中如:Windows里常见的NTFS,fat32等.存在于linux系统中的ext3,ext... 查看详情

浅谈mysql的存储引擎(表类型)

来源:http://www.cnblogs.com/lina1006/archive/2011/04/29/2032894.html什么是MySql数据库   通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合。   我们... 查看详情

日志表的mysql存储引擎

...7:44【问题描述】:在mysql上用于日志表的最佳存储引擎是什么?该表将包含一对ifid字段(整数)、一个日期字段、一个用于消息级别的varchar和一个带有消息的文本字段。它将记录各种事情,用户操作,系统事件等。预计它会迅... 查看详情

mysql存储引擎

1. 存储引擎#看你的mysql现在已提供什么存储引擎:  mysql>showengines;   #看你的mysql当前默认的存储引擎: mysql>showvariableslike‘%storage_engine%‘; 1.1. MyISAMMySql5.5之前默认的存储引擎MyISAM存 查看详情

centosmysql存储引擎(代码片段)

...统是一种软件2、文件系统类型:ext234,xfs数据不管使用什么文件系统,数据内容不会变化不同的是,存储空间、大小、速度3、MySQL引擎:可以理解为,MySQL的“文件系统”,只不过功能更加强大4、MySQL引擎功能:除了可以提供基... 查看详情

mysql数据库开发重点知识总结(代码片段)

一、存储引擎1.什么是存储引擎?库就是文件夹,表就是文件,文件都会有文件的格式,存储引擎就是文件格式.存储引擎就是文件的类型(格式),文本文件有TXT类型、图片有JPG类型、视频有MP4格式.mysql中最常用的是InnoDB存储引擎(格... 查看详情

3000帧动画图解mysql为什么需要binlogredolog和undolog

MySQL最初搭载的存储引擎是自研的只支持简单查询的MyISAM的前身ISAM,后来与Sleepycat合作研发了BerkeleyDB引擎,支持了事务。江山代有才人出,技术后浪推前浪,MySQL在持续的升级着自己的存储引擎的过程中,遇到了横空出世的InnoDB... 查看详情

阿里面试:为什么mysql不建议使用delete删除数据?

MySQL是一种关系型数据库管理系统,它的数据存储是基于磁盘上的文件系统实现的。MySQL将数据存储在表中,每个表由一系列的行和列组成。每一行表示一个记录,每一列表示一个字段。表的结构由其列名、数据类型... 查看详情

mysql存储引擎(代码片段)

一:存储引擎是什么存储引擎其实就是对于数据库文件的一种存取机制,如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。MySQL中的数据用各种不同的技术存储在文件ÿ... 查看详情

为什么mysql使用b+树(代码片段)

为什么MySQL使用B+树概述设计读写性能数据加载总结个人概括参考概述首先需要澄清的一点是,MySQL跟B+树没有直接的关系,真正与B+树有关系的是MySQL的默认存储引擎InnoDB,MySQL中存储引擎的主要作用是负责数... 查看详情

mysql——1.索引(代码片段)

1.索引是什么?提到索引必须提到存储引擎(需要了解Mysql逻辑架构1.Server层2.存储引擎层)索引的具体实现与存储引擎相关,存储引擎负责将数据持久化在磁盘中,以及提供数据读写接口值得注意的是,记... 查看详情