欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > MySQL存储引擎——针对实习面试

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

2025/4/19 15:20:29 来源:https://blog.csdn.net/weixin_73527957/article/details/143371831  浏览:    关键词: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;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词