一、基础部分
-
什么是数据库事务?MySQL 中事务的四个特性(ACID)是什么?
- 数据库事务是作为单个逻辑工作单元执行的一系列操作。ACID 分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
- 原子性指事务中的所有操作要么全部成功,要么全部失败回滚;一致性指事务必须使数据库从一个一致性状态变换到另一个一致性状态;隔离性指多个事务并发执行时,一个事务的执行不能被其他事务干扰;持久性指一旦事务提交,其对数据库的更改是永久的。
-
MySQL 中有哪些存储引擎?它们的特点分别是什么?
- InnoDB:支持事务、行级锁、外键约束,具有较好的并发性能和数据完整性保障。
- MyISAM:不支持事务和行级锁,但查询速度较快,适合以读为主的应用场景。
- Memory:数据存储在内存中,读写速度非常快,但数据在服务器重启后会丢失。
-
解释一下 MySQL 的索引是什么?有哪些类型的索引?
- 索引是一种数据结构,用于提高数据库查询的效率。它可以快速定位到满足查询条件的数据行。
- 类型包括 B 树索引、哈希索引、全文索引等。B 树索引是最常见的索引类型,适用于大多数查询场景;哈希索引适用于等值查询;全文索引用于对文本内容进行搜索。
二、SQL 语句部分
-
写出几种常见的 SQL 语句,如查询、插入、更新、删除。
- 查询:
SELECT * FROM table_name WHERE condition;
- 插入:
INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,...);
- 更新:
UPDATE table_name SET column1 = value1, column2 = value2,... WHERE condition;
- 删除:
DELETE FROM table_name WHERE condition;
- 查询:
-
什么是 SQL 连接(JOIN)?有哪些类型的连接?
- SQL 连接用于从两个或多个表中检索数据。连接条件基于表之间的关联列。
- 类型包括内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN,MySQL 不直接支持全连接,但可以通过其他方式实现)。
-
如何优化 SQL 查询?
- 合理使用索引、避免全表扫描;优化查询语句的结构,减少不必要的子查询和函数调用;对查询结果进行缓存等。
三、高级部分
-
解释一下 MySQL 的存储过程和函数是什么?有什么区别?
- 存储过程和函数都是一组 SQL 语句的集合,可以接受参数并返回结果。
- 区别在于存储过程可以有多个输出参数,而函数只能有一个返回值;存储过程可以执行 DML(数据操作语言)语句,而函数只能执行查询操作。
-
MySQL 中的视图是什么?有什么作用?
- 视图是一个虚拟表,其内容由查询定义。
- 作用包括简化复杂查询、提供数据独立性、限制数据访问等。
-
如何进行数据库备份和恢复?
- 可以使用 mysqldump 工具进行备份,生成 SQL 脚本文件。恢复时可以使用 mysql 命令执行备份文件中的 SQL 语句。
- 也可以使用物理备份工具,如复制数据文件等方式进行备份和恢复。
四、性能调优部分
-
如何优化 MySQL 的性能?
- 优化数据库结构,如合理设计表、选择合适的数据类型;调整服务器参数,如缓存大小、连接数等;优化 SQL 查询等。
-
什么是慢查询日志?如何分析和优化慢查询?
- 慢查询日志记录执行时间超过一定阈值的 SQL 语句。可以通过分析慢查询日志找出执行时间较长的查询,然后进行优化,如添加索引、优化查询语句等。
-
如何监控 MySQL 的性能?
- 可以使用 MySQL 自带的性能监控工具,如 SHOW STATUS、SHOW PROCESSLIST 等命令。也可以使用第三方监控工具,如 Nagios、Zabbix 等。