iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中InnoDB和MyISAM引擎的对比
  • 392
分享到

MySQL中InnoDB和MyISAM引擎的对比

MySQL中InnoDB和MyISAM引擎的对比 2015-02-19 13:02:17 392人浏览 无得
摘要

目录 索引对比 锁对比 事务对比 并发 全文索引对比 外键 其他 一.索引对比 1.B+树概念 我们这里关注B+树的两个特性: 叶子节点包含数据data(data并不特指数据库中的某一行数据,也可以是某个数值,指针等) 叶子

MySQL中InnoDB和MyISAM引擎的对比

目录

  • 索引对比
  • 锁对比
  • 事务对比
  • 并发
  • 全文索引对比
  • 外键
  • 其他

一.索引对比

1.B+树概念

我们这里关注B+树的两个特性:

  1. 叶子节点包含数据data(data并不特指数据库中的某一行数据,也可以是某个数值,指针等)
  2. 叶子节点均在同一层,且每个节点均可以直接找到上一个或者下一个节点(双向指针,比常规的B+树多了一个指向上一个的指针)

2.Innodb

以用户表为例,id为主键,另外name存在索引idx_name

CREATE TABLE `t_user` (
  `id` bigint,
  `name` varchar(10),
  `age` int,
  PRIMARY KEY (`id`),
  KEY `idx_name` (`name`)
);

插入数据:

insert into t_user (id,`name`,age) values
(1,'n7',10),
(2,'n6',20),
(3,'n5',30),
(4,'n4',40),
(5,'n3',50),
(6,'n2',60),
(7,'n1',70)

①聚簇索引(聚集索引)

聚簇索引:行数据与键值(主键)紧凑地存储在一起;

InnoDB中表现为:B+树叶子节点的data用于存放行数据(包含主键值、其他列数据、回滚指针、事务id等),物理上索引数据与行数据都放在同一个文件中(.ibd

如果没有定义主键,InnoDB会选择一个非空的唯一索引代替。如果没有这样的索引,InnoDB会隐式定义一个主键(DB_ROW_ID)来作为聚簇索引。

②辅助索引

与聚簇索引最大的不同是:B+树的data存放的并不是行数据,而是主键值

select * from t_user where name="n1"时,会先通过idx_name索引找到n1对应的主键的值(id=7),再通过主键值找到行数据 [7,n1,70] 。

3.MyISAM 索引

与InnoDB不同,MyISAM并不使用聚簇索引,MyISAM的索引数据和行数据是分开的,物理上分别为.myi索引数据文件和.myd行数据文件(InnoDB 索引和行数据均在.idb文件中)

MyISAM中,主键索引和其他的一般索引在数据结构上并没有什么区别,B+树的data存放的均是数据行地址

主键索引:

普通索引:

二.对比

Mysql支持三种锁定级别,行级、页级、表级;

MyISAM支持表级锁定,提供与 oracle 类型一致的不加锁读取(non-locking read in SELECTs)

InnoDB支持行级锁,但值得注意的是InnoDB的行锁是加到索引上的,所以在某次查找时没有用上索引,InnoDB表同样会锁全表。

三.事务对比

InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,以事务为单位操作可以提高多用户并发操作的性能。

MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择

四.并发

MyISAM读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读。

InnoDB 读写阻塞与事务隔离级别相关。

五.全文索引

MyISAM支持FULLTEXT类型的全文索引

InnoDB不支持FULLTEXT类型的全文索引,但是InnoDB可以使用sphinx插件支持全文索引,并且效果更好

六.外键

MyISAM不支持

InnoDB支持

七.其他

InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。

MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;

站在巨人的肩膀上摘苹果:

https://www.jianshu.com/p/8e054da3Da05

Https://www.cnblogs.com/leonandyou/p/11337273.html

https://www.cnblogs.com/balfish/p/8288891.html

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中InnoDB和MyISAM引擎的对比

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么进行InnoDB引擎和MyISAM引擎的对比
    这期内容当中小编将会给大家带来有关怎么进行InnoDB引擎和MyISAM引擎的对比,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  ...
    99+
    2024-04-02
  • MySQL中MyISAM引擎与InnoDB引擎性能比较
    MySQL中MyISAM引擎与InnoDB引擎性能比较,基本上我们可以考虑使用InnoDB来替代我们的MyISAM引擎。MySQL表结构CREATE TABLE `myisam` (`id` int(11)...
    99+
    2024-04-02
  • mysql 存储引擎MYISAM 和 innodb 比较
    MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好。甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直到读操作完成。另外,MyISAM ...
    99+
    2024-04-02
  • MySQL的存储引擎InnoDB和MyISAM
    目录1. MyISAM底层存储1.1 MyISAM底层存储(非聚集索引方式)1.2 InnoDB底层存储(聚集索引方式)2. InnoDB与MyISAM简介3. MyISAM与Inn...
    99+
    2024-04-02
  • mysql中InnoDB和MyISAM对比的示例分析
    这篇文章主要介绍了mysql中InnoDB和MyISAM对比的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。事务:InnoDB 是事务型的,可以使用 Commit 和...
    99+
    2023-06-14
  • 深入学习 Mysql 引擎 InnoDB、MyISAM
    tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 💕💕 推荐:体系化学习Java(Ja...
    99+
    2023-08-31
    mysql java 面试 innodb myisam
  • MySQL中InnoDB与MyISAM的对比分析
    小编给大家分享一下MySQL中InnoDB与MyISAM的对比分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对比InnoDB与MyISAM1、 存储结构MyI...
    99+
    2023-06-27
  • MyISAM和InnoDB存储引擎的区别
    目录 前言存储引擎 区别事务外键表单的存储数据查询效率数据更新效率 如何选择 前言 MyISAM和InnoDB是使用MySQL最常用的两种存储引擎,在5.5版本之前默认采用MyISAM存储引擎,从5.5开始采用InnoD...
    99+
    2023-08-17
    数据库 mysql java
  • MyISAM与InnoDB索引实现的对比分析
    小编给大家分享一下MyISAM与InnoDB索引实现的对比分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MyISAM索引实现...
    99+
    2024-04-02
  • MySQL存储引擎InnoDB与Myisam的优缺点
    mysql有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE...
    99+
    2022-12-29
    InnoDB与Myisam InnoDB与Myisam的优缺点 InnoDB与Myisam的区别
  • 如何将MySQL中的MyISAM存储引擎转换为InnoDB存储引擎?
    要将MyISAM引擎转换为InnoDB,我们可以使用ALTER命令。现在让我们借助引擎MyISAM 创建一个表。 mysql> create table MyISAMToInnoDBDemo -> ( -> id ...
    99+
    2023-10-22
  • 浅谈一下MyISAM和InnoDB存储引擎的区别
    目录前言存储引擎区别事务外键表单的存储数据查询效率数据更新效率如何选择前言 MyISAM和InnoDB是使用mysql最常用的两种存储引擎,在5.5版本之前默认采用MyISAM存储引擎,从5.5开始采用InnoDB存储引...
    99+
    2023-04-28
    Mysql MyISAM Mysql InnoDB Mysql 存储引擎
  • MySQL中InnoDB引擎如何对索引的扩展
    MySQL中InnoDB引擎如何对索引的扩展,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。InnoDB引擎对索引的扩展,自动追加主键值及其对执...
    99+
    2024-04-02
  • mysql数据存储引擎InnoDB和MyISAM的优势及区别是什么
    这篇文章主要介绍“mysql数据存储引擎InnoDB和MyISAM的优势及区别是什么”,在日常操作中,相信很多人在mysql数据存储引擎InnoDB和MyISAM的优势及区别是什么问题上存在疑惑,小编查阅了...
    99+
    2024-04-02
  • MySQL-SQL InnoDB引擎 (中)
    ♥️作者:小刘在C站 ♥️个人主页: 小刘主页  ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏:云计算技术 ♥️小刘私信可以随便问,只要会...
    99+
    2023-08-31
    数据库 mysql sql
  • MySQL存储引擎MyISAM与InnoDB区别总结整理
    1、MySQL默认存储引擎的变迁 在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。 2、MyISAM与InnoDB存储引擎...
    99+
    2024-04-02
  • 如何分析MySQL常见的两种存储引擎MyISAM与InnoDB
    本篇文章为大家展示了如何分析MySQL常见的两种存储引擎MyISAM与InnoDB,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一 MyISAM1.1 MyISAM简介MyISAM是MySQL的默认...
    99+
    2023-06-19
  • Mysql中MyISAM和InnoDB的区别及说明
    目录MyISAM和InnoDB的区别1. 定义2. 区别3. 使用MyISAM和InnoDB索引结构分析存储引擎作用于什么对象MyISAM和InnoDB对索引和数据的存储在磁盘上是如何体现的MyISAM主键索引与辅助索引...
    99+
    2022-12-26
    Mysql中MyISAM Mysql中InnoDB MyISAM和InnoDB的区别
  • MySQL 中 InnoDB 和 MyISAM 的区别是什么
    今天就跟大家聊聊有关MySQL 中 InnoDB 和 MyISAM 的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  InnoDB 和 ...
    99+
    2024-04-02
  • Mysql中myisam和innodb的区别有哪些
    这篇文章给大家分享的是有关Mysql中myisam和innodb的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 (1)5点不同 1. 存储结构 &nb...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作