MySQL存储引擎【InnoDB、MyISAM、Memory】

数据库,MySQL这样存在多存储引擎的数据库软件,清楚常见的存储引擎的区别,使用合适的存储引擎,使得项目跑的更顺畅,有时候对于一个项目,甚至比项目本身都重要。这篇文章,旨在浅谈常见的三种存储引擎的区别,优缺点。是学习也是分享。

1:查看MySQL所支持的存储引擎:

1.1 show engines;

1.2 show variables like ‘have%‘;

这样,我们清楚了MySQL所支持的存储引擎都有哪些。

下面,分析一下几个常见的存储引擎。InnoDB,MYISAM和Memory。

2:InnoDB存储引擎

2.1:InnoDB具有事务,回滚,崩溃修复能力和多版本并发的事务安全

2.2:关于InnoDB的auto_increment列:

2.2.1:InnoDB支持自动增长列,此列不能为空,且值必须唯一

2.2.2:此列必须为主键。插入时,不指定值,默认是自增都的值。指定0或者NULL时,也 是自增后的值。指定合法且不存在的值,则此后的自动从该值开始

2.3:InnoDB中的Foreign Key:

InnoDB支持外键。外键所在表通常称为子表。所依赖表称为父表。且父表中,被子表关联的字段必须为父表的主键。

(外键:可以简单的理解为:当对父表的数据进行更新,删除,添加时,子表的数据也会随之变化。例子很多,此处不举例)

2.4:InnoDB的存储引擎及其优缺点:

InnoDB存储引擎的存储格式有三个文件:

.frm表结构文件,此文件存放表创建时的字段定义等信息。

表的数据文件,存放在innodb_data_home_dir目录下,

表的索引文件,存放在innodb_data_file_path目录下

InnoDB存储引擎具有良好的ACID特性。

InnoDB的缺点:读写效率相对MYISAM比较差。占用的磁盘空间比较大。

2.5:InnoDB的理想使用场合:

高并发,更新操作比较多的表。需要使用事务的表。对自动灾难恢复有要求的表。

3:MYISAM存储引擎:

3.1:MYISAM存储引擎表的存储有三个文件:

.frm文件,存储表的结构

.myd文件,存储表的数据

.myi文件,存储表的索引

3.2:MYISAM存储引擎的存储格式

3.2.1:静态型

表的所有列都是静态的(定长的)。这种情况下,维护和访问预定义格式存储的数据需要的开销很低。但是,需要的空间会更多,原因是,数据在存储的时候,使 用每个列的最大空间来存储,有浪费的空间。当然,磁盘这个都不是问题。

3.2.2:动态型

指标的列中有动态型的列(不定长的)。优点是:使用空间少。缺点是:更新数据时,需要移动数据,产生内部碎片的同时,也降低了维护和访问的效率。

对于这个问题,我们可以:(1)尽量的使用定长字段(2)使用optimize table语句,整理表中的碎片

3.2.3:压缩型:

针对应用程序的声明周期中,只读的数据表,我们可以通过:myisampack工具转化为MYISAM压缩表,以减少使用的磁盘空间

3.4:MYISAM存储引擎的优缺点:

优点:占用空间小,处理速度快(相对InnoDB来说)

缺点:不支持事务的完整性和并发性

4:Memory存储引擎

4.1:Memory存储引擎的文件存储形式

Memory存储引擎也会再磁盘上形成一个 .frm的表结构文件,只是表的数据件并不以文件的形式存放在磁盘上。鉴于其数据存放在内存里,因此,访问速度更快。但需 要考虑的是:内存上数据的持久性。

4.2:Memory存储引擎的索引类型

默认的是哈希索引,也支持BTree索引

4.3:Memory存储引擎的数据存储周期

数据存放在内存上,一旦服务器关机,数据将不再存在

4.4:Memory存储引擎的优缺点:

Memory存储引擎不支持变长表列

MySQL4.1.0之前,不支持auto_increment列

4.5:Memory存储引擎的使用场合

速度要求快的,临时数据

丢失以后,对项目整体没有或者负面影响不大的时候。

来自为知笔记(Wiz)

时间: 2024-10-24 14:39:20

MySQL存储引擎【InnoDB、MyISAM、Memory】的相关文章

浅谈MySQL存储引擎-InnoDB&MyISAM

存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式是不同的.每一种存储引擎都有它的优势和劣势,本文只讨论最常见的InnoDB和MyISAM两种存储引擎进行讨论.本文中关于数据存储形式和索引的可以查看图解MySQL索引 MySQL逻辑架构图: InnoDB存储引擎 InnoDB是默认的事务型存储引擎,也是最重要,使用最广泛的存储引擎.在没有特殊情况下,一般优先使用InnoDB存储引擎. 1??.数据存储形式

MySQL存储引擎 InnoDB/ MyISAM/ MERGE/ BDB 的区别

MyISAM:默认的MySQL插件式存储引擎,它是在Web.数据仓储和其他应用环境下最常使用的存储引擎之一.注意,通过更改 STORAGE_ENGINE 配置变量,能够方便地更改MySQL服务器的默认存储引擎. InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持. BDB:可替代InnoDB的事务引擎,支持COMMIT.ROLLBACK和其他事务特性. Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问. Merge:允许MyS

[转帖]一文看懂mysql数据库本质及存储引擎innodb+myisam

一文看懂mysql数据库本质及存储引擎innodb+myisam https://www.toutiao.com/i6740201316745740807/ 原创 波波说运维 2019-09-29 00:01:00 概述 今天主要讲下mysql数据库引擎的一些概念和mysql数据库本质,一句话总结: 文件夹-文件:一个数据库其实就是一个的文件夹,数据库里面的表就是文件夹里的一个或者多个文件(根据数据库引擎不同而不同,MyISAM是3个,InnoDB是2.5个) mysql的数据库其实就是存放在M

MySQL存储引擎之MyIsam和Innodb总结性梳理

区别  MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩 展名为.MYD (MYData).索引文件的扩 展名是.MYI (MYIndex). 基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的 大小只受限于操作系统文件的大小,一般为 2GB 事务处理上方面: MyISAM类型的表强调的是性能,其执行数 度比InnoDB类型更快,但是不提供事务支

MySQL存储引擎InnoDB与Myisam

InnoDB与Myisam的六大区别 InnoDB与Myisam的六大区别 MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩 展名为.MYD (MYData).索引文件的扩 展名是.MYI (MYIndex). 基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的 大小只受限于操作系统文件的大小,一般为 2GB 事务处理上方面: MyISAM类型的

mysql 存储引擎 innodb和myISAM(转)

mysql5.5+的版本默认引擎都是InnoDB,早期的Mysql版本默认的存储引擎是myISAM innodb: 1.事务操作2.外键操作3.行级锁,这是当有where条件的时候.没有where时,不知道在那一个范围进行搜索时,也是表锁.提供和 Oracle 一样的一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量.4.写的速度快,这是建立在索引的更新操作上 5.InnoDB 的设计目标是处理大容量数据时最大化性能,它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中最

mysql 存储引擎 InnoDB 与 MyISAM 的区别和选择

http://www.blogjava.net/jiangshachina/archive/2009/05/31/279288.html 酷壳 - MySQL: InnoDB 还是 MyISAM? 51cto - InnoDB还是MyISAM 再谈MySQL存储引擎的选择 MyISAM VS InnoDB —— MySQL存储引擎的选择

mysql存储引擎-innodb和myisam的详细区别介绍

现网,使用mysql数据库,访问量单台机器可以达到1w/s,使用了好久,打算对mysql的一些知识做总结.先从最基本的存储引擎入手. 我们目前现网使用的存储引擎是: innodb. 一. 数据存储上的区别: myisam的数据,在磁盘上,存于三个文件,分别为数据文件:.myd, 索引文件:.myi,结构文件:.frm; innodb的数据,则受限于操作系统文件的大小,一般为2G. 具体影响: myisam数据库,索引和数据是分开存储的,索引是有压缩的,所以内存使用率比较高.由于文件存在磁盘,所以

MySQL存储引擎Innodb和MyISAM对比总结

Innodb引擎 InnoDB是一个事务型的存储引擎,设计目标是处理大数量数据时提供高性能的服务,它在运行时会在内存中建立缓冲池,用于缓冲数据和索引. Innodb引擎优点 1.支持事务处理.ACID事务特性: 2.实现了SQL标准的四种隔离级别: 3.支持行级锁和外键约束: 4.可以利用事务日志进行数据恢复. Innodb引擎缺点 1.不支持FULLTEXT类型的索引,因为它没有保存表的行数,当使用COUNT统计时会扫描全表. Innodb引擎适用场景 1.需要事务的操作: 2.更新数据需要使

【深入浅出Mysql】MySql存储引擎之MyISAM(二)

一.MyISAM 1.1 数据存储 MyISAM是默认的MySQL插件式存储引擎.它不支持事务和外键.优势:访问速度快,基本上以SELECT.INSERT为主的应用基本上都可以使用这个引擎来创建表.每个MyISAM在磁盘上存储称3个文件,其文件名和表名相同,扩展名不同,分别是: .frm(存储表自定义) .MYD(MYDATA,存储数据) .MYI(MYIndex,存储索引) MyISAM的数据文件和索引文件可以放置在不同的目录,平均分布IO,获得更快的速度.其中索引文件需要在创建表的时候通过D