精华内容
下载资源
问答
  • 2020-09-11 15:39:27

    前言

    mysql面试中最常问的问题之一: 小伙子,你说一下你们公司用的存储引擎,以及你知道有哪些存储引擎和他们之间的区别?

    面试者: 简历给我吧,我去下一家。

    什么是存储引擎?

    官方定义:

    存储引擎其实就是对于数据库文件的一种存取机制,如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。

    通俗版:
    mysql中的数据使用不同的技术存储在文件或者内存中,这些技术中包含不同的存储机制和索引技巧,因为不同所以提供了不同的功能和能力。 在mysql中将这些不同的技术以及配套的相关功能成为存储引擎。

    存储引擎的有哪些?

    常见的存储引擎有innodb,myisam,MEMORY

    区别

    InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback),现在高版本中默认自带的就是innoDB引擎了。

    MyISAM:最重要的特性就是,不支持事务;筛选大量数据的时候速度非常快,在并发插入的时候允许同时选择和插入数据,所以MyISAM引

    更多相关内容
  • MySQL几种存储引擎

    千次阅读 2018-12-29 15:49:05
    MySQL存储引擎介绍 存储引擎是一插拔式的插件方式,提供了一套API标准;是指定在表之上的,即一个库中的每一个表都可以指定专用的存储引擎;不管表采用什么样的存储引擎,都会在数据区,产生对应的一个frm文件...

    一。MySQL存储引擎介绍
    存储引擎是一种插拔式的插件方式,提供了一套API标准;是指定在表之上的,即一个库中的每一个表都可以指定专用的存储引擎;不管表采用什么样的存储引擎,都会在数据区,产生对应的一个frm文件(表结构定义描述文件)。
    二。各种存储引擎
    1.CSV存储引擎
    在这里插入图片描述
    数据存储以CSV文件
    特点: 不能定义没有索引、列定义必须为NOT NULL、不能设置自增列 -->不适用大表或者数据的在线处理
    CSV数据的存储用,隔开,可直接编辑CSV文件进行数据的编排 -->数据安全性低
    注:用vi或文本编辑器编辑之后,要生效使用flush table XXX 命令
    应用场景: 数据的快速导出导入 表格直接转换成CSV

    2.Archive存储引擎
    压缩协议进行数据的存储,数据存储为ARZ文件格式
    特点: 只支持insert和select两种操作 只允许自增ID列建立索引 行级锁 不支持事务 数据占用磁盘少(较其他存储引擎小的多,基本1:8-1:9的比例)
    应用场景: 日志系统 大量的设备数据采集

    3.Memory(heap)存储引擎
    因为现在nosql已经非常成熟了,所以一般不会在生产上使用memory存储引擎。但是他是临时表默认的存储引擎。
    数据都是存储在内存中,IO效率要比其他引擎高很多 服务重启数据丢失,内存数据表默认只有16M 特点: 支持hash索引,B tree索引,默认hash(查找复杂度0(1)) 字段长度都是固定长度varchar(32)=char(32) 不支持大数据存储类型字段如 blog,text(如果超过的话,会选择myisam引擎)
    表级锁
    应用场景: 等值查找热度较高数据 查询结果内存中的计算,大多数都是采用这种存储引擎 作为临时表存储需计算的数据

    4.myisam存储引擎(MySQL8.0被废弃掉了)
    Mysql5.5版本之前的默认存储引擎 较多的系统表也还是使用这个存储引擎 系统临时表也会用到Myisam存储引擎
    特点: a,select count(*) from table 无需进行数据的扫描,他有一个专门计算数据的函数,InnoDB需要一行行的扫描,计算出来。
    b,数据(MYD)和索引(MYI)分开存储
    c,表级锁
    d,不支持事务

    myisam实现B+树的体现
    在这里插入图片描述
    数据和索引分别存储,不管用哪个存储引擎,都会生成一个.frm文件(表定义文件),数据保存在myd文件,索引保存在myi文件里面。在myisam里面,叶子节点的数据区保存的是.myd的内存地址,在.myi通过索引找到这条数据的内存地址,再通过这个地址去.myd里面找到对应的数据。

    5.InnoDB
    Mysql5.5及以后版本的默认存储引擎特点:
    a.事务ACID
    b.行级锁
    c.聚集索引(主键索引)方式进行数据存储
    d.支持外键关系保证数据完整性(不常用)

    InnoDB在MySQL中的体现
    在这里插入图片描述
    只有.ibd和.frm两个文件,他的index和数据放在了一起,在InnoDB中,以主键为索引来组织数据的存储,如果没有明确指定一个主键(ID)索引,他会默认的生成一个隐藏的6byte的Int型的索引来作为他的主键索引,只是这个隐式的索引看不到而已。
    注意:MySQL每个版本都是略微差异,比如在MySQL5.7之前都有.frm文件,而在mysql8.0之后就将该文件移除掉了。

    三、各种存储引擎的对比:

    在这里插入图片描述

    上一篇:MySQL常见配置
    下一篇:mysql-基于tree的索引的数据结构

    展开全文
  • 时候面试题中也会问道MySQL几种常用的存储引擎的区别。这次就简短侃一下存储引擎那些事儿。先去查一下“引擎”概念。引擎(Engine)是电子平台上开发程序或系统的核心组件。利用引擎,开发者可迅速建立、铺设程序所...

    MySQL是我们经常使用的数据库处理系统(DBMS),不知小伙伴们有没有注意过其中的“存储引擎”(storage_engine)呢?有时候面试题中也会问道MySQL几种常用的存储引擎的区别。这次就简短侃一下存储引擎那些事儿。

    先去查一下“引擎”概念。

    引擎(Engine)是电子平台上开发程序或系统的核心组件。利用引擎,开发者可迅速建立、铺设程序所需的功能,或利用其辅助程序的运转。一般而言,引擎是一个程序或一套系统>的支持部分。常见的程序引擎有游戏引擎,搜索引擎,杀毒引擎等。

    k,我们知道了,引擎就是一个程序的核心组件。

    简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式。

    存储引擎的概念是MySQL的特点,Oracle中没有专门的存储引擎的概念,Oracle有OLTP和OLAP模式的区分。不同的存储引擎决定了MySQL数据库中的表可以用不同的方式来存储。我们可以根据数据的特点来选择不同的存储引擎。

    在MySQL中的存储引擎有很多种,可以通过“SHOW ENGINES”语句来查看。下面重点关注InnoDB、MyISAM、MEMORY这三种。

    InnoDB存储引擎

    InnoDB给MySQL的表提供了事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全。在MySQL从3.23.34a开始包含InnnoDB。它是MySQL上第一个提供外键约束的表引擎。而且InnoDB对事务处理的能力,也是其他存储引擎不能比拟的。靠后版本的MySQL的默认存储引擎就是InnoDB。

    InnoDB存储引擎总支持AUTO_INCREMENT。自动增长列的值不能为空,并且值必须唯一。MySQL中规定自增列必须为主键。在插入值的时候,如果自动增长列不输入值,则插入的值为自动增长后的值;如果输入的值为0或空(NULL),则插入的值也是自动增长后的值;如果插入某个确定的值,且该值在前面没有出现过,就可以直接插入。

    InnoDB还支持外键(FOREIGN KEY)。外键所在的表叫做子表,外键所依赖(REFERENCES)的表叫做父表。父表中被字表外键关联的字段必须为主键。当删除、更新父表中的某条信息时,子表也必须有相应的改变,这是数据库的参照完整性规则.

    InnoDB中,创建的表的表结构存储在.frm文件中(我觉得是frame的缩写吧)。数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。

    InnoDB的优势在于提供了良好的事务处理、崩溃修复能力和并发控制。缺点是读写效率较差,占用的数据空间相对较大。

    MyISAM存储引擎

    MyISAM是MySQL中常见的存储引擎,曾经是MySQL的默认存储引擎。MyISAM是基于ISAM引擎发展起来的,增加了许多有用的扩展。

    MyISAM的表存储成3个文件。文件的名字与表名相同。拓展名为frm、MYD、MYI。其实,frm文件存储表的结构;MYD文件存储数据,是MYData的缩写;MYI文件存储索引,是MYIndex的缩写。

    基于MyISAM存储引擎的表支持3种不同的存储格式。包括静态型、动态型和压缩型。其中,静态型是MyISAM的默认存储格式,它的字段是固定长度的;动态型包含变长字段,记录的长度不是固定的;压缩型需要用到myisampack工具,占用的磁盘空间较小。

    MyISAM的优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。

    MEMORY存储引擎

    MEMORY是MySQL中一类特殊的存储引擎。它使用存储在内存中的内容来创建表,而且数据全部放在内存中。这些特性与前面的两个很不同。

    每个基于MEMORY存储引擎的表实际对应一个磁盘文件。该文件的文件名与表名相同,类型为frm类型。该文件中只存储表的结构。而其数据文件,都是存储在内存中,这样有利于数据的快速处理,提高整个表的效率。值得注意的是,服务器需要有足够的内存来维持MEMORY存储引擎的表的使用。如果不需要了,可以释放内存,甚至删除不需要的表。

    MEMORY默认使用哈希索引。速度比使用B型树索引快。当然如果你想用B型树索引,可以在创建索引时指定。

    注意,MEMORY用到的很少,因为它是把数据存到内存中,如果内存出现异常就会影响数据。如果重启或者关机,所有数据都会消失。因此,基于MEMORY的表的生命周期很短,一般是一次性的。

    怎样选择存储引擎

    在实际工作中,选择一个合适的存储引擎是一个比较复杂的问题。每种存储引擎都有自己的优缺点,不能笼统地说谁比谁好。

    d586bc14374dd9213137faa0edddf6fc.png

    InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

    MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。

    MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

    注意,同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。

    展开全文
  • Mysql常见数据库引擎

    千次阅读 2022-03-23 17:32:11
    InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。InnoDB主要特性: MyISAM存储引擎 MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、...

    InnoDB存储引擎

    InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。InnoDB主要特性有:

    MyISAM存储引擎

    MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物。

    在这里插入图片描述

    展开全文
  • mysql一共多少存储引擎

    千次阅读 2019-01-14 21:05:50
    执行如下指令查看所有mysql所有的存储引擎 SHOW ENGINES InnoDB存储引擎 InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。InnoDB主要特性...
  • Mysql常见的几种存储引擎

    千次阅读 2021-01-18 21:47:56
    一、mysql的体系结构整个MysqlServer一下部分组成Connection Pool : 连接池组件Management Services & Utilities : 管理服务和工具组件SQL Interface : SQL接口组件Parser : 查询分析器组件Optimizer : 优化...
  • MYSQL有哪几种索引,你知道吗?

    万次阅读 2018-12-26 21:40:46
    MySQL目前主要以下几种索引类型: 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 二、语句 CREATE TABLE table_name[col_name data type][unique|fulltext][index|key][index_name](col_name...
  • Mysql索引有哪几种类型

    万次阅读 2019-02-27 10:35:15
    索引是一将数据库中单列或者多列的值进行排序的结构。应用索引可以大幅度提高查询的速度。 用户通过索引查询数据,不但可以提高查询速度,也可以降低服务器的负载。用户查询数据时,系统可以不必遍历表中的所有...
  • MySQLMySQL有几种

    万次阅读 多人点赞 2020-03-29 22:48:11
    innodb的意向锁什么作用? 三、从加锁策略上分:乐观锁和悲观锁 四、其他:自增锁 自增锁(AUTO-INC锁) 外键检测的加锁策略 一、按照对数据操作的锁粒度来分:行级锁、表级锁、页级锁、间隙锁 ...
  • MySQL有哪几种索引? 总览 索引用于快速找出在某行的数据,如果不使用索引,MySQL必须从第一条记录开始读取整个表,直到找到相关的行 表越大,查询数据所花费的时间就越多,通过索引MySQL能够快速到达某一行的位置...
  • MySQL常见的三存储引擎

    千次阅读 2021-08-04 16:25:17
    简单来说,存储引擎就是指表的类型...在MySQL中的存储引擎有很多,可以通过“SHOW ENGINES”语句来查看。下面重点关注InnoDB、MyISAM、MEMORY这三。 一.InnoDB存储引擎 InnoDB给MySQL的表提供了事务处理、回滚、
  • Mysql目前主要以下几种索引方式:FULLTEXT,HASH,BTREE,RTREE。 那么,这几种索引什么功能和性能上的不同呢? FULLTEXT 即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,...
  • mysql存储引擎

    万次阅读 多人点赞 2019-07-31 19:28:44
    数据库存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还...
  • 1.存储引擎是什么?什么用? 2.Mysql中常见的存储引擎有哪些? 3.MyISAM和innoDB的区别? 问题回答 1.Mysql中的数据用各种不同的技术储存在文件(或内存)中,这些技术中的每一个技术都...3.mysql存储引擎总共,常用
  • mysql几种存储引擎

    千次阅读 2018-07-23 09:25:30
    InnoDB 是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB 是默认的 MySQL 引擎。 (2)、MyISAM 存储引擎 MyISAM 基于 ISAM 存储引擎,并对其进行扩展。它是在 Web、数据仓储和其他应用...
  • MySQL几种数据库引擎介绍

    千次阅读 2019-03-30 19:44:35
    1、什么是数据库引擎 2、ISAM 3、MyISAM 4、InnoDB 5、MyISAM与InnoDB的区别 1、什么是数据库引擎 数据库引擎就是操作数据库的一段程序或程序段,用于存储、处理和保护数据的核心服务。利用数据库引擎可控制...
  • MySQL几种搜索引擎概述

    千次阅读 2019-02-28 09:30:56
    前言 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同...MySQL给开发者提供了查询存储引擎的功能,我在这里使用的是MySQL5.1,可...
  • 一、引言 与其他DBMS一样,MySQL有一个具体管理和处理数据的内部引擎,当你使用CREATE TABLE语句的时候,该引擎创建表,在你使用SELECT语句或者...二、MySQL常见的三种引擎 InnDB是一个可靠的事务处理引擎,但是它不
  • MySQL几种方法的数据库备份

    万次阅读 2021-01-28 02:50:26
    MySQL有几个方法来备份最近博客一直想写点。可是不知道写什么,感觉自己近期的知识没有什么添加,今天想到了一篇能够写的博客。曾经试过依据data目录...所以今天分享一下MySQL数据库的备份的几种方式。方式一:使用...
  • Mysql数据库几种搜索引擎

    万次阅读 2017-07-10 15:46:00
    MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三...下面介绍几种数据库引擎:  ISAM:ISAM是一个定义明确且历经时间考验的数据表格...
  • Mysql 数据库几种引擎的区别比较

    千次阅读 2018-06-05 10:18:34
    MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。InnoDB:用于事务处理应用...
  • 常见的 mysql 搜索引擎

    千次阅读 2021-01-18 18:37:24
    简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式。存储引擎的概念是MySQL的特点,Oracle中没有专门的...在MySQL中的存储引擎有很多,可以通过“SHOW ENGINES”语句来查看。下面重点关注InnoDB、My...
  • MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表。 若要修改默认引擎,可以修改配置文件中的default-storage-engine。可以通过:show variables like 'default_...
  • mysql几种引擎和使用场景

    千次阅读 2018-03-16 18:35:21
    数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。...存储引擎查看MySQL给开发者提供了查询存储引擎的功能,我这里使用的是MySQL5.1,可以使用:SHOW...
  • Mysql常见引擎的区别

    千次阅读 2019-01-05 14:42:34
    Mysql数据库引擎 Mysql常见的三中存储引擎为InnoDB、MyISAM、MEMORY。其区别提现在事物安全、存储限制、空间使用、插入数据的速度和对外键的支持上,具体如下: 特性 InnoDB MyISAM MEMORY ...
  • MySQL存储引擎

    千次阅读 2021-12-10 17:31:12
    一、mysql存储引擎概述 1.1 存储引擎 MySQL中的数据用各种不同的技术存储在文件(或者内存)中。 这些技术中的每一技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。 通过选择...
  • 优化mysql几种常用方法

    千次阅读 2021-02-05 13:52:43
    感兴趣的话就一起来看看这篇文章吧,相信看完优化mysql几种常用方法对大家多少有点帮助吧。1. 选择合适的存储引擎: InnoDB除非你的数据表使用来做仅仅读或者全文检索 (相信如今提到全文检索...
  • mysql几种引擎比较

    千次阅读 2017-09-17 19:53:02
    Innodb:mysql5.58开始默认的存储引擎。支持事务,行锁设计,支持外键,支持非锁定读即默认读取操作不会产生锁。索引为聚集索引,缓冲索引文件和数据文件,每张表的存储都是按主键的顺序存放,如果没有显式地在表定义...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,060
精华内容 63,624
关键字:

mysql有哪几种引擎

mysql 订阅