【后端面经-数据库】MySQL的存储引擎简介

这篇具有很好参考价值的文章主要介绍了【后端面经-数据库】MySQL的存储引擎简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • MySQL的存储引擎
    • 0. 存储引擎的查看和修改
    • 1. MyISAM
    • 2. InnoDB
    • 3. MEMORY
    • 4. MERGE
    • 5. 总结
    • 6. 参考博客

MySQL的存储引擎

mysql主要有四类存储引擎,目前主要使用InnoDB作为存储引擎。

0. 存储引擎的查看和修改

  • 查看当前数据库的默认存储引擎
    show variables like 'default_storage_engine';
    
  • 查看当前数据库所支持的存储引擎
    show engine;//语句1
    show variables like 'have_%';//语句2
    
  • 查看支持事务处理的存储引擎
    select engine from information_schema.engines where transactions='yes';
    
  • 设置新表的存储引擎
    create table 表名 (字段名 字段类型) engine=存储引擎;//语句1
    create table 表名 (字段名 字段类型) type=存储引擎;//语句2
    

1. MyISAM

  1. 文件组成
    • .frm文件:表结构定义,frame,可以理解成对整体框架的存储
    • .MYD文件:数据文件,存储的是具体的数据库数据条目
    • .MYI文件:索引文件,存储的是数据库表项的索引文件
      如果用图书管理系统做比喻的话,那么,.frm文件存放的是书架本身,.MYD文件存储具体的书籍,.MYI文件存储检索书籍的索引目录。
      .MYI文件.MYD文件可以存储在不同的文件目录中,从而分散IO读写压力,提高访问速度,具体操作可在创建表的时候,通过DATA DIRECTORYINDEX DIRECTORY属性进行设置。
  2. 适用范围
    由于MyISAM不支持事务,不支持外键,访问速度快的特点,适用于以下特点的数据库:
    - 不要求事务完整性
    - 操作主要是查找SELECTINSERT
  3. 安全性
    MyISAM表中有一个标志,用于存储上次退出表是否是正常退出,每次启动该表之前会检查该标志,如果上次是异常退出,则考虑进行检查和修复。
    可使用CHECK TABLEREPAIR TABLE命令进行表的检查和修改。
  4. 支持的存储格式
    • 静态表:每个条目长度固定
    • 动态表:每个条目长度不固定
    • 压缩表:压缩存储,节省空间

三者的特点如下所示:
【后端面经-数据库】MySQL的存储引擎简介

  1. 优缺点
    1. 优点:访问速度快,
    2. 缺点:不支持事务,不支持外键,不支持行级锁,不支持崩溃后的安全恢复,不支持并发插入(性能方面)

2. InnoDB

  1. 自动增长列
    指的是InnoDB支持用户手动插入的条目遵循索引项的自动增长,而不需要用户自己设置。

    然而,在InnoDB中,自动增长列必须是索引项,如果是组合索引,则是其中的第一列;而对于MyISAM,则可以是任意数据项。

    创建一个表之后,其自动增长列的起始值默认是1,也可以在创建表的时候进行修改:

    CREATE TABLE t1 (
        id INT NOT NULL AUTO_INCREMENT,
        name CHAR(30) NOT NULL,
        PRIMARY KEY (id)
    ) ENGINE=InnoDB AUTO_INCREMENT=某个起始数字;
    

    在插入条目的时候,也可以通过ALTER TABLE命令进行修改:

    ALTER TABLE 具体条目 AUTO_INCREMENT=某个起始数字;
    
  2. 外键约束

    • 在本文介绍的四个存储引擎中,只有InnoDB支持外键约束。
    • 外键约束可以指定数据表中,对父表的操作如何影响子表,具体参数如下:
      • restrict:父表的删除和更新不会对子表产生影响
      • cascade:级联操作,父表的删除和更新操作会影响子表,
      • set null:父表的删除和更新将会使得子表中相关条目设置为null
      • no action:效果等同于restrict,父表的删除和更新操作不会对子表产生影响。
    • 外键约束的开关
      根据set forgein_key_checks=0或者1的值,可以开启(值为1)或者关闭(值为0)外键约束。
  3. 优缺点

    1. 优点:支持回滚等事务处理
    2. 缺点:访问效率低,花费内存存储索引结构,占用内存较大

3. MEMORY

  1. 使用内存内容
    MEMORY表使用内存中的数据进行存储管理,因此,在使用期间需要足够的内存空间,当使用结束之后,需要进行内存释放,命令如下
    DROP FROM MEMORY 表名;
    TRUNCATE table 表名;
    
  2. hash结构
    MEMORY表的索引结构为hash,因此,有很快的访问速度,但是也引申出对于数据库操作指令的响应性能问题:
    • 相等比较:=<=>,性能较好
    • 范围比较:><BETWEENINLIKE,性能较差
    • 排序比较:order by,性能较差
      可通过改进为B树结构来提高性能
  3. 文件组成:
    使用内存中的数据来存储,只需要一个.frm文件,用于存储表结构定义。
  4. 固定长度存储
    创建该表的时候,需要设置固定长度,内部的条目长度固定,可设置最大行数来确定所需要的内存大小,max_heap_table_size参数用于设置最大行数。
    因此,对于TEXTBLOB等可变长度数据类型并不支持,但是对于VARCHAR数据类型,在实际的数据库操作中依然看作固定长度,因此可支持VARCHAR数据类型。
  5. 优缺点
    根据上文的分析,可得出MEMORY表的优缺点如下:
    • 优点: 访问速度快,使用hash存储对于相等比较操作性能良好,使用内存中的数据而不用额外生成新文件
    • 缺点: 只支持固定长度的数据条目,对于可变长度的数据类型不支持,且使用hash索引,对于范围、排序类的数据比较操作性能较差,需要额外释放内存。

4. MERGE

  1. 文件组成
    • .frm: 存储表的框架信息
    • .MRG:存储表的定义信息
  2. 具体操作
    Merge存储引擎相当于MyISAM的一个集合,需要多个表结构相同的MyISAM组合,本身并不存在数据,仅仅是一个结构,增删改查等操作还是需要对于具体的MyISAM表进行操作。
  3. 优缺点
    • 优点: 管理多个MyISAM表,方便操作
    • 缺点: 本身是多个MyISAM表的复合表,因此,MyISAM表的缺点都有。

5. 总结

对上述四种存储引擎进行比较,得出如下表格:
【后端面经-数据库】MySQL的存储引擎简介文章来源地址https://www.toymoban.com/news/detail-477360.html

6. 参考博客

  • 参考博客-1

到了这里,关于【后端面经-数据库】MySQL的存储引擎简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mysql数据库的存储引擎——必看教程

    目录 一、什么是存储引擎 二、MySQL支持的存储引擎 三、常见的存储引擎 1.InnoDB存储引擎         2.MyISAM存储引擎         3.MEMORY存储引擎 四、选择存储引擎 总结  ✨✨✨大家好,我是会飞的鱼-blog,今天我来给大家介绍一下Mysql,有不足之处,请大家多多指教。感谢大

    2024年02月03日
    浏览(33)
  • SQL Server存储过程(数据库引擎)使用详解

    SQL Server 中的存储过程是一组一个或多个 Transact-SQL 语句的引用。过程类似于其他编程语言中的构造,因为它们可以: 接受输入参数并以输出参数的形式向调用程序返回多个值。 包含在数据库中执行操作的编程语句。其中包括调用其他过程。 向调用程序返回状态值,以指示成

    2023年04月09日
    浏览(31)
  • mysql数据库数据如何迁移目录

    默认位置 C:ProgramDataMySQLMySQL Server 8.0 步骤2中Data文件夹就是mysql存放数据的位置 这里举例移动到E盘下 原来my.ini文件不要修改文件位置,如果修改需要另行学习

    2024年02月07日
    浏览(52)
  • mysql 数据库引擎介绍

    一、数据库引擎     数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。 使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库。这包括创建

    2024年02月14日
    浏览(36)
  • MySQL的数据库引擎介绍

        数据库引擎就是操作数据库的一段程序或程序段,用于存储、处理和保护数据的核心服务。     利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。数据库应用项目是通过数据库引擎与数据库链接的。     何为

    2024年02月06日
    浏览(34)
  • mysql数据库简介

      MySQL数据库的安装和卸载 MySQL数据库概念 SQL语言(操作数据库) SQL的分类 数据库的操作(CURD) 创建数据库(重点) 查看数据库(重点) 删除数据库(重点) 修改数据库 表结构操作(CURD) 创建表 数据库的数据类型(重点) 单表的约束(了解) 删除和查看表 修改表  

    2023年04月13日
    浏览(34)
  • Mysql实现Linux下数据库目录迁移

    Centos中迁移Mysql的数据目录,一般是硬盘满了不够用,然后挂载了新的数据盘,那么就可以将Mysql数据迁移到新的数据盘。 可以查看pid后kill停止,可以进入目录stop,可以变量停止 复制当前目录到新目录 更改mysql数据存储路径

    2024年02月12日
    浏览(45)
  • 头歌MySQL数据库实训答案 有目录

    头歌MySQL数据库答案 特别感谢黄副班、小青提供代码,有问题联系公众号【学思则安】留言更正 其他作业链接 数据库1-MySQL数据定义与操作实战 MySQL数据库 - 初识MySQL MySQL数据库 - 数据库和表的基本操作(一) MySQL数据库 - 数据库和表的基本操作(二) MySQL数据库 - 单表查询

    2024年04月28日
    浏览(70)
  • 【MySQL 数据库】9、存储过程

    🌱 存储过程是事先经过编译并存储在数据库中的 SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,可以提高数据处理效率 🌱 存储过程思想上很简单:就是数据库 SQL 语言层面的代码封装与重用 🍃 【封装,复用

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包