当前位置: 首页 > article >正文

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

目录

  • MySQL支持哪些存储引擎?
  • MySQL存储引擎架构了解嘛?
  • MyISAM和InnoDB有什么区别?
  • MyISAM和InnoDB如何选择?
  • 如何查看表的存储引擎?
  • 如何修改表的存储引擎?

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;

http://www.kler.cn/a/379181.html

相关文章:

  • 【linux】HTTPS 协议原理
  • 物联网赋能的人工智能图像检测系统
  • WPF使用Prism框架首页界面
  • 算法学习027 c++蛇形三角形填充 二维数组常规应用 中小学算法思维学习 比赛算法题解 信奥算法解析
  • C++ 模板专题 - 静态分支(if)
  • GitHub上传自己的项目
  • 海康视频不能在浏览器解析播放,需要转码
  • 链表详解(三)
  • mmpretrainmmdetection环境配置
  • 高并发场景下的性能测试方法!
  • ethers.js 创建钱包,导入助记词,导入私钥)
  • 浅析Android Handler机制实现原理
  • ssm037物流管理系统设计与实现+jsp(论文+源码)_kaic
  • 克服奖励欺骗:Meta发布全新后训练方式CGPO,编程水平直升5%,打破RLHF瓶颈
  • [linux驱动开发--零碎知识]基于linux内核6.11.0
  • C++笔试题之实现一个定时器
  • [JAVAEE] 面试题(三) - Callable接口, ReentrantLock类, Semaphore信号量, CountDownLatch类
  • 在线教育辅助:SpringBoot试题库系统精讲
  • Android IPC机制(一)多进程模式
  • 每周算法比赛
  • qt 如何在本地进行打包
  • 【论文精读】LPT: Long-tailed prompt tuning for image classification
  • 读书笔记-《Spring技术内幕》(四)事务
  • 【亚马逊云】基于 AWS 使用CloudFormation快速部署 VMClarity 环境
  • celery在django项目中实现并发任务和定时任务
  • SOLIDWORKS 2025用户体验新功能