MySQL 面试题, 来说说一条 SQL 语句的执行过程?
MySQL 面试题, 来说说一条 SQL 语句的执行过程?
QA
Step 1
Q:: 来说说一条 SQL 语句的执行过程?
A:: 当 MySQL 收到一条 SQL 语句时,执行过程大致如下:
1. **解析器 (Parser)
:SQL 语句首先会经过解析器,解析器将 SQL 语句分解成语法树(Parse Tree),并检查语法是否正确。
2. **预处理器 (Preprocessor)
:预处理器进一步检查语法树,验证表和列名是否存在,访问权限是否正确等。
3. **查询优化器 (Optimizer)
:优化器会生成多个执行计划,并从中选择最优的一个。它会考虑索引的使用、表连接顺序等,以减少查询时间。
4. **执行器 (Executor)
:执行器根据优化器选择的执行计划,逐步执行相应的操作,最终返回结果。
5. **存储引擎 (Storage Engine)
**:MySQL 支持多种存储引擎,实际的数据读写由存储引擎负责。执行器将数据操作请求发送给存储引擎,存储引擎完成具体的读写操作。
总结来说,SQL 语句的执行过程包括解析、预处理、优化和执行四个主要步骤。
Step 2
Q:: MySQL 中有哪些常用的存储引擎?
A:: MySQL 中常用的存储引擎有:
1.
InnoDB:支持事务、外键和行级锁定,默认的存储引擎。
2.
MyISAM:适合只读或以读操作为主的应用,不支持事务。
3.
MEMORY:将数据存储在内存中,速度快但数据不持久。
4.
CSV:以 CSV 文件格式存储数据,适合数据导入导出。
5.
ARCHIVE:适合大批量插入和很少查询的场景,不支持索引和事务。
6.
NDB:MySQL Cluster 使用的存储引擎,支持高可用和分布式存储。
Step 3
Q:: 什么是事务?事务的四大特性是什么?
A:: 事务是一组操作的集合,这些操作要么全部成功,要么全部失败。事务的四大特性是:
1. **原子性 (Atomicity)
:事务中的所有操作要么全部执行成功,要么全部回滚。
2. **一致性 (Consistency)
:事务开始和结束时,数据库必须处于一致的状态。
3. **隔离性 (Isolation)
:并发执行的事务之间互不干扰。
4. **持久性 (Durability)
:事务一旦提交,结果永久保存,即使系统崩溃也不会丢失。