首页 > 数据库 >MySQL存储引擎——针对实习面试

MySQL存储引擎——针对实习面试

时间:2024-10-30 18:47:39浏览次数:3  
标签:存储 支持 面试 引擎 InnoDB MyISAM MySQL 实习

目录

MySQL支持哪些存储引擎?

在这里插入图片描述

MySQL支持多种存储引擎,包括InnoDB、MyISAM、MEMORY、ARCHIVE、BLACKHOLE、FEDERATED、NDB Cluster等。

其中,InnoDB是默认的存储引擎(在所有引擎中只有它是事务性存储引擎),从MySQL 5.5.5版本开始,MySQL之前用的是MyISAM。

MySQL存储引擎架构了解嘛?

MySQL的存储引擎架构是基于插件式的,这意味着MySQL核心服务器与存储引擎之间通过定义良好的接口进行通信。这种架构允许不同的存储引擎与MySQL服务器一起工作,而无需对核心服务器代码进行修改。以下是MySQL存储引擎架构的一些关键点(了解就行,主要背上面的文字):

  1. 插件式架构

    • MySQL的存储引擎作为插件被加载到MySQL服务器中。
    • 用户可以根据需要选择不同的存储引擎,例如InnoDB、MyISAM等。
  2. 接口定义

    • 存储引擎必须实现一组由MySQL定义的手写接口(handler interface),这些接口包括数据的CRUD操作(创建、读取、更新、删除)以及事务处理等。
    • 这些接口确保存储引擎能够与MySQL服务器正确交互。
  3. 数据和索引管理

    • 存储引擎负责管理数据和索引的存储方式。
    • InnoDB存储引擎将数据和索引存储在同一个文件中,而MyISAM将数据和索引存储在不同的文件中。
  4. 事务处理

    • 事务性存储引擎(如InnoDB)提供事务支持,包括事务的开始、提交和回滚。
    • 非事务性存储引擎(如MyISAM)不支持事务。
  5. 锁管理

    • 存储引擎负责实现锁机制,以控制并发访问。
    • InnoDB支持行级锁,而MyISAM支持表级锁。
  6. 崩溃恢复

    • 事务性存储引擎通常具有崩溃恢复机制,以确保数据库在发生故障后能够恢复到一致的状态。
    • InnoDB使用redo日志和undo日志来实现这一点。
  7. 存储格式

    • 存储引擎决定数据的物理存储格式。
    • 例如,InnoDB使用B+树作为索引结构,而MyISAM使用B树。
  8. 内存管理

    • 存储引擎可能有自己的内存缓冲区,用于缓存数据和索引,以提高访问速度。
  9. 存储引擎的切换

    • 用户可以在创建表或修改表时指定存储引擎。
    • 例如,CREATE TABLE my_table ENGINE=InnoDB;ALTER TABLE my_table ENGINE=InnoDB;
  10. 存储引擎的扩展性

    • 用户可以根据自己的需求开发新的存储引擎,并将其作为插件加载到MySQL服务器中。

MySQL的存储引擎架构提供了高度的灵活性和可扩展性,使得MySQL能够适应不同的应用场景和性能需求。

MyISAM和InnoDB有什么区别?

  • 事务支持:InnoDB支持事务处理(ACID兼容),而MyISAM不支持

  • 锁机制:InnoDB支持行级锁定,而MyISAM只支持表级锁定

  • 外键约束:InnoDB支持外键约束,而MyISAM不支持

  • 崩溃恢复:InnoDB具有强大的崩溃恢复能力,使用预写式日志(Write-Ahead Logging, WAL)策略来确保数据的持久性,而MyISAM的崩溃恢复能力相对较弱

  • 性能特点:MyISAM在读取操作方面通常比InnoDB更快,特别是在读取大量数据时。然而,InnoDB在写入操作、事务处理和并发控制方面表现更优

关键背对照表

MyISAMInnoDB
事务支持不支持支持
锁机制只支持表级锁定支持行级锁定
外键约束不支持支持
崩溃恢复相对较弱强大,使用预写式日志策略
性能特点读取操作更快写入操作、事务处理、并发控制表现更优

MyISAM和InnoDB如何选择?

大部分情况下我们都用InnoDB存储引擎(在日常开发的情况下,真的找不到什么情况用MyISAM)

如何查看表的存储引擎?

可以使用以下两种方法查看MySQL中表的存储引擎:

  • 使用SQL查询:
SHOW TABLE STATUS FROM database_name LIKE 'table_name';

SHOW CREATE TABLE table_name;
  • 使用MySQL命令行工具,连接到MySQL服务器后,使用SHOW TABLE STATUS命令来查看所有表的存储引擎

如何修改表的存储引擎?

要修改MySQL中表的存储引擎,可以使用ALTER TABLE语句。

例如,将名为table_name的表的存储引擎修改为InnoDB,可以使用以下命令:

ALTER TABLE table_name ENGINE=InnoDB;

标签:存储,支持,面试,引擎,InnoDB,MyISAM,MySQL,实习
From: https://blog.csdn.net/weixin_73527957/article/details/143371831

相关文章

  • html和css面试题
    1:主流浏览器的内核分别是什么?IE:trident内核 [‘traidnt]Firefox:gecko内核 [ˈɡekəʊ]Safari:webkit内核Chrome,Opera:Blink内核(基于webkit) 2:每个HTML文件开头都有<!DOCTYPE html>,它的作用是什么<!DOCTYPEhtml>声明位于文档中的最前面的位置,此标签告知浏......
  • Ubuntu22 mysql8 MHA高可用
    mha-manager地址:https://github.com/yoshinorim/mha4mysql-managermha-node地址:https://github.com/yoshinorim/mha4mysql-node mha有mha-manager和mha-node2个组件由于主节点有可能会被切换成从节点,而每一个从节点也有可能会被切换成主节点所以MHA对Mysql复制环境有特......
  • Mysql梳理11——聚合函数
    Mysql梳理11——聚合函数Mysql梳理11——聚合函数11.1引言11.2聚合函数介绍11.2.1什么是聚合函数11.2.2聚合函数类型11.2.3聚合函数语法11.3具体聚合函数11.3.1AVG和SUM函数11.3.2MIN和MAX函数11.3.3COUNT函数11.4GROUPBY11.4.1基本使用11.4.2使用多个列......
  • 力扣面试题 _ 1393
    .-力扣(LeetCode)1.目标        编写解决方案报告每只股票的 资本损益。        股票的 资本利得/损失 是指一次或多次买卖该股票后的总收益或损失。        以 任意顺序 返回结果表。2.分析3.实现selectstock_name,sum(cas......
  • 实习中第一次帮助mentor之thrift协议
    Thrift协议前因后果在实习中发现自己需要用thrift协议发送请求,起因就是需要用到公司内部rpc来进行服务之间的请求本篇主要着重于如何解读thrift接口文档,节省大家的时间thrift的优点二进制格式:Thrift使用二进制格式来序列化和反序列化数据,这使得它在网络传输中比纯文本格式......
  • 前端面试题整合(有html、css、js、vue等)
    #一、html#行内外空元素行内元素:a/img/span/b/strong/input/select/section块级元素:div/p/table/ul/li/h1-h6空元素:br/hr/img/input/link/meta#浏览器内核Trident:IE,360,搜狗Gecko:FirefoxPresto:旧OperaWebkit:Safari,旧ChromeBlink:Chrome,Opera#浏览器存储c......
  • kerberos认证(面试)
    kerberos认证主要用来解决身份认证的问题,避免非法用户去操作我们kafka里面的数据。kerberos它是一个服务,是需要我们搭建的。AD:主要用来存储用户名和密码、秘钥、包括用户所有的一些权限。KDC里面包含两个角色。用户鉴权流程:首先客户端通过用户名、密码或者是keytab(秘钥)来访......
  • MySQL敏感数据进行加密的几种方法
    使用MySQL内置的加密函数AES_ENCRYPT和AES_DECRYPT函数方法介绍:AES(AdvancedEncryptionStandard)是一种对称加密算法。在MySQL中,可以使用AES_ENCRYPT函数对数据进行加密,使用AES_DECRYPT函数进行解密。这种加密方式的特点是加密和解密使用相同的密钥。示例:......
  • MySQL如何输出自己的AWR分析报告
    一、启用慢查询日志配置慢查询日志参数编辑MySQL配置文件(通常是my.cnf或my.ini),找到以下参数并进行设置。slow_query_log:将其设置为1以启用慢查询日志。例如:slow_query_log=1。long_query_time:定义查询执行时间的阈值,超过这个时间的查询会被记录到慢查询日志中。单......
  • MYSQL索引相关
    原sqlSELECTid,user_id,package_id,term_id,source,type,order_id,code_record_id,created_at,updated_at,version,is_deletedASdeletedFROMtbl_purchased_packageWHERE(ter......