mysql面试知识点及大厂面试题

preview
需积分: 0 2 下载量 129 浏览量 更新于2023-03-17 收藏 1.28MB DOCX 举报
MySQL 面试知识点及大厂面试题 MySQL 是一个关系型数据库管理系统,广泛应用于各种行业和领域。作为一名 IT 行业大师,我将从存储引擎、锁机制、事务等方面详细剖析 MySQL 的知识点,并总结出大厂面试题的要点。 一、存储引擎 MySQL 提供了多种存储引擎,包括 MyISAM、InnoDB、MEMORY 等。其中,MyISAM 和 InnoDB 是两种最常用的存储引擎。 1.1、MyISAM MyISAM 是 MySQL 5.5 之前的默认存储引擎。它具有以下特点: * 只有表级锁,不支持行级锁 * 强调性能,每次查询具有原子性,执行速度比 InnoDB 类型更快 * 不提供事务支持 * 不支持外键 * 不支持崩溃后的安全恢复 1.2、InnoDB InnoDB 是 MySQL 5.5 及以后的默认存储引擎。它具有以下特点: * 支持行级锁和表级锁,默认为行级锁 * 提供事务支持,具有 commit 和 rollback 事务能力 * 支持外键 * 支持崩溃后的安全恢复,使用 redo log 实现 * 支持 MVCC(Multi-Version Concurrency Control),用于高并发事务,MVCC 比单纯的加锁更高效 二、锁机制 锁机制是数据库用来保证数据一致性和并发安全的机制。MySQL 的锁机制可以分为三种: 2.1、表级锁 表级锁就是对数据库中的表加锁,让整个表处于只读状态。 2.2、页级锁 页级锁就是对数据库中的表的页加锁,让整个页处于只读状态。 2.3、行级锁 行级锁就是针对数据表中行记录的锁。InnoDB 存储引擎的锁算法包括: * Record lock:记录锁,单个行记录上的锁 * Gap lock:间隙锁,锁定一个范围,不包括记录本身 * Next-key lock:record+gap 临键锁,锁定一个范围,包含记录本身 三、事务 事务是逻辑上的一组操作,要么都执行,要么都不执行。事务具有四个特性:原子性、一致性、隔离性和持久性。 3.1、ACID 特性 * 原子性(Atomicity):事务是最小的执行单位,不允许分割。 * 一致性(Consistency):执行事务前后,数据完整性保持一致。 * 隔离性(Isolation):并发访问数据库时,一个事务在执行过程中不会被其他事务干扰。 * 持久性(Durability):一个事务被提交之后,它对数据库中数据的改变是永久的。 3.2、如何实现 ACID? * MySQL InnoDB 引擎使用 redo log 保证事务的持久性,使用 undo log 来保证事务的原子性。 * MySQL InnoDB 引擎通过锁机制、MVCC 等手段来保证事务的隔离性。 四、并发事务的问题 4.1、脏读(Dirty read) 一个事务读取到了另一个事务还没有提交的数据。 4.2、丢失修改(Lost to modify) 一个事务覆盖了另一个事务已经提交的数据。 理解 MySQL 的存储引擎、锁机制和事务机制是非常重要的,它们是 MySQL 的核心组成部分,能够帮助开发者更好地使用 MySQL 数据库。