MySQL面试题《存储》

201 阅读4分钟

My SQL中间有空格是为了让ai朗读的时候能念好。不然就是:M!Y!S!Q!L!

欢迎收听《面试速通》。在本期节目中,我们将讨论My SQL的存储引擎,这是理解和优化数据库性能的关键。

1. 有哪些常见的存储引擎?

My SQL中常见的存储引擎包括:

  • InnoDB:支持事务处理,行级锁定,外键约束,默认存储引擎。
  • MyISAM:不支持事务处理,表级锁定,适合读多写少的应用。
  • Memory:将数据存储在内存中,速度快,但数据非持久化。
  • CSV:将数据存储为CSV文件,适合数据交换。
  • Archive:适合存储大量历史数据,支持高效插入操作,压缩存储。
  • NDB:适用于My SQL Cluster,提供高可用性和分布式存储。
  • Federated:允许访问远程My SQL服务器上的表。

2. MyISAM 和 InnoDB 的区别是什么?

  • 事务支持
    • InnoDB:支持事务处理,ACID特性。
    • MyISAM:不支持事务处理。
  • 锁机制
    • InnoDB:行级锁定,提高并发性能。
    • MyISAM:表级锁定,适合读多写少的场景。
  • 外键支持
    • InnoDB:支持外键约束。
    • MyISAM:不支持外键约束。
  • 崩溃恢复
    • InnoDB:有自动崩溃恢复功能。
    • MyISAM:需要手动修复。
  • 表空间
    • InnoDB:支持表空间管理。
    • MyISAM:每个表有独立的文件(.MYD和.MYI)。

3. InnoDB引擎的四大特性是什么?

InnoDB引擎的四大特性是:

  • 事务支持:支持ACID(原子性、一致性、隔离性、持久性)特性,确保数据一致性。
  • 行级锁定:通过行级锁定机制,显著提高了高并发环境下的性能。
  • 外键支持:支持外键约束,保证数据的参照完整性。
  • 崩溃恢复:使用双写缓冲区和重做日志(redo log),提供自动崩溃恢复能力。

4. InnoDB为何推荐使用自增主键?

InnoDB推荐使用自增主键的原因包括:

  • 数据页分裂减少:自增主键按顺序插入,减少了数据页分裂的可能性,提高插入性能。
  • 聚簇索引优化:InnoDB使用聚簇索引,自增主键使得数据行按顺序存储,提升查询效率。
  • 维护成本低:自增主键简单且唯一,减少了索引维护的复杂性。

5. 什么是 InnoDB 的页、区、段?

在InnoDB中,存储结构包括:

  • 页(Page):InnoDB存储的最小单位,默认大小为16KB。页用于存储行记录、索引等。
  • 区(Extent):由64个连续的页组成,大小为1MB。区用于减少存储碎片。
  • 段(Segment):由多个区组成,管理数据和索引的存储空间。

这种分层结构提升了存储管理的效率和性能。

6. My SQL中的BLOB和TEXT有什么区别?

  • BLOB(Binary Large Object):用于存储二进制数据,如图像、视频。BLOB有四种类型:TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB,分别对应不同的存储大小。
  • TEXT:用于存储大量文本数据。TEXT有四种类型:TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT,分别对应不同的存储大小。

主要区别在于数据类型和用途:BLOB用于二进制数据,TEXT用于文本数据。

7. My SQL中的表分区及其优势是什么?

表分区(Partitioning)是将一个大表分成多个小表(分区),每个分区独立存储和管理。分区的类型包括范围分区(RANGE)、列表分区(LIST)、哈希分区(HASH)和键值分区(KEY)。

优势

  • 提高查询性能:查询可以在特定分区内进行,减少数据扫描量。
  • 提升管理效率:分区可以独立管理,简化备份和恢复操作。
  • 增强可扩展性:分区可以分布在不同的存储设备上,提升存储和访问能力。
  • 优化大数据处理:分区策略可以根据业务需求优化大数据处理。

感谢收听本期《面试速通》。希望这些关于My SQL存储引擎的知识对你有所帮助。记得关注我们的节目,获取更多面试技巧和知识。我们,下期再见!