当前位置:首页 » 服务存储 » mysql表的存储引擎怎么看
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mysql表的存储引擎怎么看

发布时间: 2023-02-28 04:23:33

Ⅰ 什么是Mysql存储引擎

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 查询设置和修改表引擎。

Ⅱ mysql的存储引擎有哪些,有什么区别,适用场景

MyISAM、InnoDB、Heap(Memory)、NDB

貌似一般都是使用 InnoDB的,

mysql的存储引擎包括:MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDBCluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。
最常使用的2种存储引擎:
1.Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用Myisam。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义)、.MYD(MYData,存储数据)、.MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。
2.InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比Myisam的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

不知道是不是对你有帮助

Ⅲ 如何查看MySQL的当前存储引擎

查看MySQL当前存储引擎的方法步骤:

  1. 查看当前表的默认存储引擎,可以使用如下图所示的命令。查询之后,我们可以查看笔者这里这个表默认的存储引擎是:InnoDB.

  2. 如果我们想知道当前MySQL提供什么存储引擎,可以使用如下图所示的命令。通过查询我们知道,笔者所安装的MySQL提供了9种不同的存储引擎。

  3. 如果我们想要知道当前数据库默认的是什么存储引擎,可以使用如下图所示的命令。通过查询我们知道,笔者所安装的MySQL默认的存储引擎是InnoDB。

  4. 给一个新建的表指定特定的存储引擎。

  5. 修改一个已经存在表的存储引擎,假设这里我们想要修改“t1”表的存储引擎。我们就可以按命令来操作。执行之后,我们的t1表的存储引擎,就从默认的InnoDB变为了CSV.

Ⅳ 如何查看mysql的存储引擎类型

有时的时候,我们想查看以下mysql的表的存储引擎是什么类型的,不用说,大家直接想到的就是使用show create table命令查看创建表的命令,从而直接认为定义表的引擎就是表的真正存储引擎,这个方法在大多数情况下是没有错的,但是在有的时候却是致命的错误,因为有的时候明明看的的是 engine =myisam ,怎么会select count(*) from tbl_name 的查询速度怎么会真么慢呢。这种情况一般会出现在使用该创建表的存储没有安装成功,从而导致表使用的时数据库的默认存储引擎。因此严格的来说查看mysql的表的存储引擎使用show create table命令是不完全正确的。正确的方式是使用下面我介绍的两种方式,这两种方式查看出来的是没有任何问题的,还请大家仔细阅读下面的文章
正确方式一: SHOW TABLE STATUS from 数据库库名 where Name='表名';01.hymin@Ubuntu:/myhome$ mysql -uroot -p'mypassword'
02.Welcome to the MySQL monitor. Commands end with ; or \g.
03.Your MySQL connection id is 221
04.Server version: 5.1.41-3ubuntu12.7 (Ubuntu)05.
06.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
07.
08.mysql> SHOW TABLE STATUS from mytest where Name='test';
09.+------------+--------+---------+------------+------+----------------+-------------+(省略部分结果)
10.| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length |(省略部分结果)
11.+------------+--------+---------+------------+------+----------------+-------------+(省略部分结果)
12.| test | MyISAM | 10 | Fixed | 0 | 0 | 0 |(省略部分结果)
13.+------------+--------+---------+------------+------+----------------+-------------+(省略部分结果)
14.1 row in set (0.02 sec)15.
16.mysql> 5. 正确方式二:
mysqlshow -u 数据库登录帐号 -p '数据库登录帐号密码' --status 数据库库名 表名1.hymin@Ubuntu:/myhome$ mysqlshow -uroot -p'mypassword' --status mytest test
2.Database:mytest Wildcard: test
3.+------------+--------+---------+------------+------+----------------+-------------+(省略部分结果)
4.| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length |(省略部分结果)
5.+------------+--------+---------+------------+------+----------------+-------------+(省略部分结果)
6.| test | MyISAM | 10 | Fixed | 0 | 0 | 0 |(省略部分结果)

Ⅳ 如何查看MySQL的当前存储引擎

查看当前表的默认存储引擎,可以使用如下图所示的命令。查询之后,我们可以查看笔者这里这个表默认的存储引擎是:InnoDB.

如果我们想知道当前MySQL提供什么存储引擎,可以使用如下图所示的命令。通过查询我们知道,笔者所安装的MySQL提供了9种不同的存储引擎。

如果我们想要知道当前数据库默认的是什么存储引擎,可以使用如下图所示的命令。通过查询我们知道,笔者所安装的MySQL默认的存储引擎是InnoDB。

给一个新建的表指定特定的存储引擎,比如我们要新建一个“t2”表,我们希望这个表的存储引擎是MyISAM,具体操作如下图所示。

修改一个已经存在表的存储引擎,假设这里我们想要修改“t1”表的存储引擎。我们就可以按下图所示的命令来操作。执行之后,我们的t1表的存储引擎,就从默认的InnoDB变为了CSV.

Ⅵ 如何在Linux上检查MySQL数据表的存储引擎类型

提问: 我想要知道我的MySQL数据库是MyISAM还是Innodb类型。我该如何检查MySQL数据库表的类型?
MySQl主要使用两种存储引擎:MyISAM 和 Innodb。MyISAM是非事务的,因此拥有读取更快,然而InnoDB完全支持细颗粒度的事务锁定(比如:commit/rollback)。当你创建一张新的MySQL表时,你要选择它的类型(也就是存储引擎)。如果没有选择,你就会使用与预设置的默认引擎。
如果你想要知道已经存在的MySQL数据表的类型,这里有几种方法达到。

InnoDB存储引擎的启动、关闭与恢复 http://www.linuxidc.com/Linux/2013-06/86415.htm
MySQL InnoDB独立表空间的配置 http://www.linuxidc.com/Linux/2013-06/85760.htm
MySQL Server 层和 InnoDB 引擎层 体系结构图 http://www.linuxidc.com/Linux/2013-05/84406.htm
InnoDB 死锁案例解析 http://www.linuxidc.com/Linux/2013-10/91713.htm
MySQL Innodb独立表空间的配置 http://www.linuxidc.com/Linux/2013-06/85760.htm
方法一
如果你可以访问phpMyAdmin,你可以从phpMyAdmin找出默认的数据库类型。从phpMyAdmin中选中数据库来查看它的表列表。在“Type”一列的下面,你会看到每个表的数据表类型。

方法二
如果你可以直接登录MySQL服务器,另外一种鉴别存储引擎的方法是登录MySQL服务器后运行下面的MySQL命令:
mysql> SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA ='my_database' AND TABLE_NAME ='my_table';
上面的命令会显示在'mydatabase'数据库中'mytable'表的引擎类型。
方法三
还有一种检查引擎的方法是使用mysqlshow,是一种命令行下的显示数据库信息的工具。mysq