2025年MySQL面试题大全(精选120题)

2025年MySQL面试题大全(精选120题)1~30题及答案

1. MySQL是什么?它支持哪些存储引擎?

答案
MySQL是一个开源的关系型数据库管理系统(RDBMS),使用SQL进行数据管理。
常用存储引擎

InnoDB:支持事务、行级锁定和外键,适合高并发场景。
MyISAM:读取速度快,不支持事务,适合查询密集型场景。
MEMORY:数据存储在内存中,读写快但数据易失,适合临时表。

2. 简述ACID特性及实现方式。

答案

原子性(Atomicity):通过Undo Log实现事务回滚,确保操作要么全部成功,要么全部失败。
一致性(Consistency):由应用层和数据库共同保证,事务执行前后数据状态必须一致。
隔离性(Isolation):通过多版本并发控制(MVCC)实现,确保并发事务互不干扰。
持久性(Durability):通过Redo Log和双写缓冲区(Double Write Buffer)确保提交后数据不丢失。

3. 事务隔离级别有哪些?

答案

READ UNCOMMITTED:允许读取未提交数据(可能脏读)。
READ COMMITTED:仅读取已提交数据(避免脏读)。
REPEATABLE READ(MySQL默认):同一事务内多次读取数据一致。
SERIALIZABLE:完全串行化,避免所有并发问题(性能最低)。

4. 索引类型及底层数据结构?

答案

B+树索引:非叶子节点存储索引值,叶子节点形成链表,适合范围查询。
哈希索引:仅支持等值查询,MySQL的Memory引擎支持。
全文索引:用于全文搜索,如MATCH() AGAINST()

5. 索引失效的常见场景?

答案

对索引列使用函数(如WHERE LEFT(name,3) = 'Tom')。
模糊查询以%开头(如LIKE '%abc')。
隐式类型转换(如索引为INT类型,查询条件为字符串)。

6. 优化查询性能的方法?

答案

使用合适索引,避免全表扫描。
减少SELECT *,只查询必要列。
使用EXPLAIN分析执行计划,检查索引使用情况。
避免在WHERE子句中使用函数或表达式。

7. 视图的作用及使用场景?

答案
视图是虚拟表,基于SQL查询结果集,可简化复杂查询、保护数据安全(限制访问特定列)。
示例

CREATE VIEW it_employees AS SELECT name, salary FROM employees WHERE department = 'IT';  
8. 存储过程与函数的区别?

答案

存储过程:可执行复杂逻辑,通过CALL调用,支持输出参数。
函数:返回单一值,可直接在SQL语句中使用(如SELECT func_name();)。

9. 触发器的作用及类型?

答案
触发器在特定事件(INSERT/UPDATE/DELETE)时自动执行SQL,分为:

BEFORE触发器:操作前执行(如数据校验)。
AFTER触发器:操作后执行(如日志记录)。

10. 主从复制原理及延迟解决方案?

答案

原理:主库记录Binlog,从库读取并应用日志。
延迟解决方案:并行复制(MTS)、半同步复制、降低Binlog格式为ROW。

11. 分库分表设计要点?

答案

分片键选择:如用户ID、时间。
路由策略:取模、范围、哈希。
全局ID生成:雪花算法、Redis自增。

12. 死锁排查步骤?

答案

使用SHOW ENGINE INNODB STATUS查看最近死锁信息。
分析事务等待关系,优化SQL执行顺序。

13. 慢查询日志及优化步骤?

答案

作用:记录执行时间超过阈值的查询。
优化步骤

通过EXPLAIN分析执行计划。
检查索引是否失效。
重写复杂查询,拆分为多个简单查询。
调整数据模型(如增加汇总表)。

14. MySQL高可用方案?

答案

主从复制+VIP:虚拟IP漂移,切换时间约30秒。
MHA:基于脚本自动故障转移,切换时间10-30秒。
InnoDB Cluster:基于Group Replication,切换时间<5秒。

15. 千万级用户表设计?

答案

垂直拆分:分离基础信息与扩展信息。
水平拆分:按用户ID哈希分表(如user_00~user_99)。
索引优化:建立覆盖索引,避免回表。

16. 字符集与排序规则?

答案

常用字符集:UTF8MB4(支持emoji)、GBK(中文)。
排序规则utf8mb4_unicode_ci(不区分大小写)、utf8mb4_bin(区分大小写)。

17. 数据库归一化与反归一化?

答案

归一化:减少数据冗余,提高一致性(如1NF、2NF、3NF)。
反归一化:通过冗余字段提高查询性能(如存储汇总值)。

18. 锁机制及类型?

答案

表级锁:MyISAM引擎使用,锁定整张表。
行级锁:InnoDB引擎使用,锁定单行数据。
意向锁:表明事务即将对某行加锁,避免全表扫描。

19. 数据库连接池配置?

答案
示例配置(Druid):

initialSize=5  
minIdle=5  
maxActive=20  
maxWait=60000  
20. MySQL 8.0新特性?

答案

窗口函数:如RANK(), ROW_NUMBER()
通用表表达式(CTE):支持递归查询。
隐藏索引:通过INVISIBLE关键字隐藏索引,便于调优。

21. 数据库备份与恢复方法?

答案

逻辑备份mysqldump导出SQL文件。
物理备份:直接复制数据文件(如InnoDB的.ibd文件)。
恢复方法:使用mysql命令执行SQL文件。

22. 数据库设计三范式?

答案

1NF:字段不可再分(原子性)。
2NF:满足1NF,且非主键字段完全依赖主键。
3NF:满足2NF,且非主键字段无传递依赖。

23. SQL注入防护措施?

答案

使用预编译语句(PreparedStatement)。
对用户输入进行过滤和转义。
避免动态拼接SQL语句。

24. 数据库读写分离实现?

答案
使用中间件(如ProxySQL)路由读写请求,主库处理写操作,从库处理读操作。

25. 数据库垂直拆分与水平拆分?

答案

垂直拆分:按业务拆分表(如用户表、订单表分开)。
水平拆分:按数据范围拆分表(如按用户ID哈希分表)。

26. 数据库冷热分离?

答案
将历史数据(如3年以上未登录用户)迁移到低成本存储(如归档表)。

27. 数据库索引合并优化?

答案
当查询条件可使用多个索引时,MySQL选择部分索引合并扫描,提高查询效率。

28. 数据库表结构设计优化?

答案

使用合适数据类型(如INT代替VARCHAR存储数字)。
避免NULL值(可用默认值代替)。
添加必要注释,提高可维护性。

29. 数据库性能监控工具?

答案

Performance Schema:MySQL内置性能监控。
Prometheus + Grafana:可视化监控。
Percona Monitoring and Management(PMM):第三方监控解决方案。

30. 数据库迁移注意事项?

答案

确保字符集、排序规则一致。
迁移前进行兼容性测试。
使用工具(如mysqldumpmydumper)进行迁移。


以上题目及答案覆盖了MySQL面试的核心考点,包括基础概念、高级特性、性能优化及高可用方案等,助您系统复习,轻松应对面试!

2025年MySQL面试题大全(精选120题)31~60题及答案

31. MySQL中边读边发机制是什么?

答案
边读边发是MySQL处理查询结果集的一种优化策略。服务器在查询过程中逐步将数据发送给客户端,而非等待全部数据准备完毕后再返回。

优势:减少内存占用,避免大结果集导致内存溢出。
场景:配合LIMIT或分页查询使用,提升长查询响应速度。

32. 大表查询为何不会爆内存?

答案
MySQL通过流式查询临时表机制避免内存溢出:

流式查询:使用MySQL_USE_RESULT模式逐行返回数据,减少内存占用。
临时表:复杂查询(如GROUP BY)可能生成磁盘临时表,避免内存不足。

33. 临时表的用法和特性

答案

创建方式

CREATE TEMPORARY TABLE tmp_table (...);  
- **特性**:  
  - 仅对当前会话可见,连接关闭后自动删除。  
  - 支持内存(`MEMORY`引擎)和磁盘存储(`InnoDB`引擎)。  

#### **34. MySQL存储引擎对比(InnoDB/MyISAM/MEMORY)**  
**答案**:  
| 引擎       | 事务 | 行级锁 | 外键 | 适用场景                  |  
|------------|------|--------|------|---------------------------|  
| **InnoDB**  | ✔️   | ✔️     | ✔️   | 高并发写、事务型业务      |  
| **MyISAM** | ❌   | ❌     | ❌   | 读多写少、全文搜索        |  
| **MEMORY** | ❌   | ❌     | ❌   | 临时表、高速读写缓存      |  

#### **35. 何时使用MEMORY引擎?**  
**答案**:  
- 数据量小且无需持久化(如会话缓存)。  
- 读写频繁但允许数据丢失(如实时计数器)。  

#### **36. 数据库误操作如何恢复?**  
**答案**:  
1. **Binlog恢复**:  
   ```bash  
   mysqlbinlog --start-datetime="时间" binlog文件 | mysql -u用户 -p  

物理备份恢复:使用XtraBackupmydumper工具还原数据文件。

37. MySQL主备同步原理

答案

主库记录Binlog事件。
从库I/O线程拉取Binlog并写入Relay Log
从库SQL线程重放Relay Log,应用数据变更。

38. 主备延迟原因及解决方案

答案

原因

主库大事务导致Binlog传输延迟。
从库硬件性能不足。

解决方案

并行复制(MySQL 5.7+支持)。
半同步复制(rpl_semi_sync_master_enabled=ON)。

39. 为什么要多线程复制策略?

答案

单线程瓶颈:从库SQL线程按顺序重放Binlog,无法利用多核CPU。
多线程优化:按库或逻辑时钟分区并行执行,提升同步速度。

40. MySQL并行复制策略

答案

按库并行slave_parallel_workers指定工作线程数。
按逻辑时钟并行:基于GTIDCOMMIT_ORDER确保事务顺序。

41. 一主一备 vs. 一主多从

答案

对比项 一主一备 一主多从
读负载 从库单一,可能成为瓶颈 可横向扩展读能力
高可用 故障切换简单 需配合中间件路由
42. 主库故障如何处理?

答案

手动故障转移:提升备库为主库,修改应用连接地址。
自动故障转移:使用MHAOrchestrator工具。

43. 读写分离过期读解决方案

答案

强制走主库:对一致性要求高的查询(如付款操作)。
延迟复制:从库设置CONNECT_RETRY延迟同步。
中间件路由:如ProxySQL根据业务标签路由。

44. 并发连接 vs. 并发查询

答案

并发连接:客户端与服务端建立的TCP连接数。
并发查询:同一时刻执行的SQL语句数量(受thread_pool_size限制)。

45. 短时间提升MySQL性能的方法

答案

调整innodb_buffer_pool_size为物理内存的70%-80%。
开启慢查询日志,优化高频SQL。
临时禁用非关键索引(ALTER TABLE ... DISABLE KEYS)。

46. 自增主键ID为何不连续?

答案

事务回滚导致已分配ID未使用。
主从复制延迟导致从库生成重复ID(需设置innodb_autoinc_lock_mode=2)。

47. InnoDB为何推荐自增主键?

答案

自增主键保证B+树顺序插入,减少页分裂。
随机主键(如UUID)导致索引碎片化,降低查询性能。

48. 如何快速复制一张表?

答案

CREATE TABLE new_table SELECT * FROM old_table;  
-- 或(保留索引)  
CREATE TABLE new_table LIKE old_table;  
INSERT INTO new_table SELECT * FROM old_table;  
49. GRANTFLUSH PRIVILEGES的作用

答案

GRANT:授予用户权限。
FLUSH PRIVILEGES:重载权限表(修改mysql.user表后需执行)。

50. 是否使用分区表?

答案

适用场景

数据按时间/范围分区(如日志表按月分区)。
配合PARTITION PRUNING提升查询效率。

慎用场景:频繁跨分区查询(如WHERE条件不包含分区键)。

51. JOIN用法及优化

答案

类型INNER JOINLEFT JOINRIGHT JOIN
优化

为连接字段添加索引。
避免SELECT *,减少数据传输。

52. MySQL自增ID类型及场景

答案

AUTO_INCREMENT:普通自增主键。
UUID:分布式系统唯一ID(需配合去-处理)。
雪花算法:高并发场景生成有序唯一ID。

53. XID在MySQL内部的生成方式

答案

由事务ID和回滚段ID组成,通过trx_sys->mysql_trx_id生成。
可在INFORMATION_SCHEMA.INNODB_TRX表中查询。

54. MySQL锁类型及场景

答案

锁类型 粒度 场景
表级锁 MyISAM全表更新
行级锁 InnoDB高并发写
间隙锁 范围 防止幻读(REPEATABLE READ
55. 什么是幻读?如何解决?

答案

定义:同一事务内,两次查询结果集数量不一致(如新增数据)。
解决

使用SERIALIZABLE隔离级别。
通过Next-Key Locks锁定记录及间隙。

56. MySQL为何会“抖一下”?

答案

Checkpoint:后台线程将脏页刷盘,短暂阻塞查询。
解决方案:调整innodb_io_capacity匹配磁盘性能。

57. 删除表后文件大小未变?

答案

InnoDB表空间(.ibd文件)不会自动收缩,需执行:

OPTIMIZE TABLE table_name;  
58. COUNT(*)实现方式对比

答案

方式 实现 性能
COUNT(*) 扫描聚簇索引
COUNT(1) COUNT(*)
COUNT(列) 扫描非空列索引
59. ORDER BY排序原理

答案

优先使用索引排序:若ORDER BY字段与索引顺序一致。
Filesort:内存排序或磁盘排序(Sort_buffer_size控制)。

60. 如何高效随机获取数据?

答案

方法1:按主键范围随机查询(需主键连续):

SELECT * FROM table WHERE id >= FLOOR(RAND() * (MAX(id)-MIN(id)+1)) LIMIT 1;  

方法2:使用内存表(MEMORY引擎)预计算随机值。


以上题目及答案覆盖了MySQL面试的高频考点,包括存储引擎、锁机制、复制策略、性能优化等,助您系统化复习,轻松应对面试!

2025年MySQL面试题大全(精选120题)61~90题及答案

61. InnoDB缓冲池(Buffer Pool)管理策略

答案

作用:缓存热数据页和索引,减少磁盘I/O。
配置innodb_buffer_pool_size建议设为物理内存的70%~80%。
优化

启用innodb_buffer_pool_instances分片,避免单线程竞争。
监控SHOW ENGINE INNODB STATUS中的缓冲池命中率(Buffer pool hit rate)。

62. 慢查询日志分析步骤

答案

开启慢查询日志:

slow_query_log = ON  
long_query_time = 2  # 记录超过2秒的查询  

使用mysqldumpslow工具分析:

mysqldumpslow -s t -t 10 /var/log/mysql/slow.log  # 按时间排序,取前10条  

优化高频慢查询(加索引、拆分复杂SQL)。

63. 分区表适用场景及限制

答案

适用场景

按时间分区(如日志表按月分区)。
按范围分区(如订单表按金额范围分区)。

限制

分区键必须是表的一部分索引。
无法对分区表直接使用ALTER TABLE ... OPTIMIZE

64. 数据库垂直拆分与水平拆分对比

答案

拆分方式 粒度 场景 示例
垂直拆分 表级 按业务拆分(如用户表、订单表) 电商系统拆分为用户库、订单库
水平拆分 行级 按数据范围拆分(如分库分表) 用户表按用户ID哈希分表
65. 数据库连接池配置参数

答案

关键参数

max_connections:最大连接数(需小于open_files_limit)。
wait_timeout:空闲连接超时时间(避免资源泄漏)。
thread_cache_size:线程缓存大小(减少线程创建开销)。

66. MySQL 8.0窗口函数使用场景

答案

示例

SELECT name, salary,  
       RANK() OVER (ORDER BY salary DESC) AS rank  
FROM employees;  

场景

计算排名(如销售额排名)。
移动平均(如股票价格趋势分析)。

67. 数据库字符集设置原则

答案

统一字符集:数据库、表、列字符集保持一致(推荐utf8mb4)。
排序规则utf8mb4_unicode_ci(通用)或utf8mb4_bin(精确匹配)。

68. 数据库死锁检测与避免

答案

检测SHOW ENGINE INNODB STATUS查看LATEST DETECTED DEADLOCK
避免

按固定顺序访问表。
缩短事务长度,减少锁持有时间。

69. MySQL备份工具对比

答案

工具 类型 特点
mysqldump 逻辑备份 支持全量/增量,可读性好
XtraBackup 物理备份 热备份,支持InnoDB,速度快
mydumper 逻辑备份 并行备份,适合大表
70. 数据库冷热数据分离策略

答案

策略

将历史数据(如3年前订单)迁移到低成本存储(如归档表)。
使用分区表按时间自动归档。

71. MySQL索引合并(Index Merge)优化

答案

适用场景:查询条件可使用多个索引(如WHERE a=1 OR b=2)。
类型

Intersection:合并多个索引的交集。
Union:合并多个索引的并集。

72. 数据库表结构设计反模式

答案

过度反范式化:冗余字段过多,导致数据不一致。
超大字段:使用TEXT/BLOB存储大量数据,影响性能。

73. 数据库读写分离中间件选型

答案

ProxySQL:支持读写分离、查询路由、限流。
MaxScale:MariaDB官方中间件,支持复杂路由策略。

74. MySQL 8.0隐藏索引(Invisible Indexes)

答案

作用:临时隐藏索引,测试索引对查询的影响。
操作

ALTER TABLE table_name ALTER INDEX index_name INVISIBLE;  
75. 数据库表锁与行锁竞争场景

答案

表锁MyISAM引擎全表更新时,阻塞其他查询。
行锁InnoDB引擎高并发写时,可能因锁等待导致超时。

76. 数据库分库分表中间件

答案

ShardingSphere:支持分库分表、读写分离、数据治理。
MyCat:基于MySQL协议的开源中间件。

77. MySQL 8.0通用表表达式(CTE)

答案

递归查询示例

WITH RECURSIVE cte (n) AS (  
  SELECT 1  
  UNION ALL  
  SELECT n + 1 FROM cte WHERE n < 10  
)  
SELECT * FROM cte;  
78. 数据库迁移兼容性测试

答案

检查字符集、排序规则、存储引擎是否一致。
验证索引、外键、触发器是否完整。
运行pt-upgrade工具对比查询性能。

79. 数据库表空间管理

答案

独立表空间innodb_file_per_table=ON(默认),每个表单独.ibd文件。
共享表空间:所有表数据存储在ibdata1中(不推荐)。

80. 数据库日志轮转策略

答案

Binlog

expire_logs_days = 7  # 自动删除7天前的日志  

慢查询日志:使用logrotate定期轮转。

81. 数据库加密传输(SSL/TLS)

答案

生成SSL证书:

mysql_ssl_rsa_setup --datadir=/var/lib/mysql  

配置my.cnf

[mysqld]  
ssl-ca=/var/lib/mysql/ca.pem  
ssl-cert=/var/lib/mysql/server-cert.pem  
ssl-key=/var/lib/mysql/server-key.pem  
82. 数据库审计(Audit)方案

答案

企业级方案:使用MariaDB Audit PluginPercona Audit Plugin
开源方案:通过General Log记录所有查询(性能影响大,慎用)。

83. 数据库性能监控指标

答案

QPS/TPS:每秒查询/事务数。
Innodb_row_lock_waits:行锁等待次数。
Threads_connected:当前连接数。

84. 数据库冷备与热备

答案

冷备:停止服务后备份数据文件(如XtraBackup --copy-back)。
热备:在线备份,不影响业务(如XtraBackup --backup)。

85. 数据库字符集转换

答案

导出数据:

mysqldump --default-character-set=utf8mb4 -u root -p db_name > dump.sql  

修改SQL文件中的字符集声明。
导入数据:

mysql --default-character-set=utf8mb4 -u root -p db_name < dump.sql  
86. 数据库并行查询优化

答案

适用场景:大表全表扫描(需配合InnoDB Parallel Read Threads)。
配置

[mysqld]  
innodb_parallel_read_threads = 4  
87. 数据库表碎片整理

答案

方法

OPTIMIZE TABLE table_name;  -- 重建表,整理碎片  

场景:频繁DELETE/UPDATE后表空间未释放。

88. 数据库锁竞争监控

答案

查询锁状态:

SHOW ENGINE INNODB STATUS;  

监控Innodb_row_lock_waitsInnodb_row_lock_time_avg

89. 数据库高可用架构选型

答案

低成本方案:主从复制 + Keepalived(VIP漂移)。
企业级方案:MySQL Group Replication + ProxySQL。

90. 数据库版本升级流程

答案

备份数据(XtraBackupmysqldump)。
测试环境验证升级(如MySQL 5.7→8.0)。
正式环境升级(使用mysql_upgrade工具)。


以上题目及答案覆盖了MySQL面试的高阶主题,包括性能调优、高可用架构、备份恢复、字符集与排序规则等,助您深入掌握MySQL核心技术!

2025年MySQL面试题大全(精选120题)91~120题及答案

91. 分布式事务解决方案

答案

XA事务:基于两阶段提交(2PC),支持跨数据库事务(如XA START/XA END)。
柔性事务

Saga模式:将长事务拆分为多个本地事务,通过补偿机制回滚。
TCC模式:Try-Confirm-Cancel三阶段操作,适用于高并发场景。

92. 全局唯一ID生成策略

答案

雪花算法(Snowflake):64位ID包含时间戳、机器ID、序列号。
UUID变种:去-并排序(如uuid_to_bin()优化存储)。
数据库自增序列:分库分表时通过STEP步长分配ID段。

93. 数据库缓存策略

答案

查询缓存query_cache_type=ON(MySQL 8.0已移除,需应用层缓存)。
Redis缓存:热点数据缓存,设置合理过期时间(TTL)。
缓存穿透解决方案

布隆过滤器预过滤无效请求。
缓存空值(如""null)。

94. 数据库冷热数据分离实践

答案

方案

按时间分区:历史数据迁移到归档表(如ALTER TABLE archive_table PARTITION BY RANGE (YEAR(create_time)))。
异构存储:冷数据存入对象存储(如AWS S3),通过元数据表映射。

95. MySQL 8.0资源组(Resource Groups)

答案

作用:按线程优先级分配CPU资源(如SELECT查询与后台任务分组)。
操作

CREATE RESOURCE GROUP batch_group TYPE = USER  
CPU = '1-2';  
SET RESOURCE GROUP batch_group FOR THREAD_ID 100;  
96. 数据库并行查询(Parallel Query)

答案

适用场景:大表全表扫描(如COUNT(*)统计)。
配置

[mysqld]  
innodb_parallel_read_threads = 4  
97. 数据库表压缩(Table Compression)

答案

InnoDB压缩

CREATE TABLE compressed_table (...) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;  

场景:冷数据存储、归档表(减少磁盘占用)。

98. 数据库字符集转换工具

答案

mysqldump:导出时指定字符集:

mysqldump --default-character-set=utf8mb4 -u root -p db_name > dump.sql  

iconv:转换SQL文件编码:

iconv -f latin1 -t utf8 dump.sql > dump_utf8.sql  
99. 数据库权限最小化原则

答案

实践

避免使用GRANT ALL PRIVILEGES
按角色授权(如CREATE ROLE dev_role; GRANT SELECT, INSERT ON db.* TO dev_role;)。

100. 数据库审计日志分析

答案

工具

MariaDB Audit Plugin:记录所有SQL操作。
Percona Audit Plugin:支持JSON格式日志。

分析:使用ELK(Elasticsearch + Logstash + Kibana)堆栈可视化审计日志。

101. 数据库在线扩容方案

答案

垂直扩容:升级服务器配置(如增加CPU/内存)。
水平扩容

分库分表(如ShardingSphere中间件)。
读写分离(主从复制 + 负载均衡)。

102. 数据库故障演练(Chaos Engineering)

答案

场景

模拟主库宕机,测试自动故障转移。
注入网络延迟,验证超时重试机制。

工具Chaos MonkeyPumba

103. 数据库版本升级风险

答案

风险

语法不兼容(如MySQL 5.7→8.0的NO_ZERO_DATE模式)。
默认参数变更(如sql_mode)。

规避

测试环境验证升级流程。
使用mysql_upgrade工具检查兼容性。

104. 数据库云服务对比(AWS RDS vs. 阿里云RDS)

答案

特性 AWS RDS 阿里云RDS
备份恢复 自动备份 + 手动快照 相同
高可用 多可用区部署 跨地域灾备
监控 CloudWatch 阿里云云监控
105. 数据库性能压测工具

答案

sysbench:测试OLTP性能(如sysbench oltp_read_write --threads=16 run)。
mysqlslap:模拟并发查询(如mysqlslap --concurrency=50 --iterations=100)。

106. 数据库锁超时设置

答案

配置

[mysqld]  
innodb_lock_wait_timeout = 30  # 默认50秒,调整为30秒  

场景:高并发写场景减少锁等待时间。

107. 数据库表结构设计反范式化场景

答案

场景

频繁JOIN查询(如订单表冗余用户姓名)。
聚合查询(如销售表冗余总金额)。

108. 数据库冷备与增量备份

答案

冷备:停止服务后备份数据文件(如XtraBackup --copy-back)。
增量备份

XtraBackup --backup --incremental-basedir=/backup/base --target-dir=/backup/inc1  
109. 数据库字符集校验工具

答案

pt-table-checksum:校验主从数据一致性(支持字符集检查)。
自定义脚本

SELECT * FROM information_schema.COLUMNS WHERE COLLATION_NAME != 'utf8mb4_unicode_ci';  
110. 数据库并行复制监控

答案

查询复制状态:

SHOW SLAVE STATUSG  

监控Slave_parallel_workersSlave_running状态。

111. 数据库在线DDL工具

答案

pt-online-schema-change:无锁修改表结构(如添加索引)。
MySQL 8.0原生DDL

ALTER TABLE table_name ADD COLUMN new_col INT, ALGORITHM=INPLACE, LOCK=NONE;  
112. 数据库连接池调优

答案

关键参数

max_connections:根据业务负载调整(如SHOW VARIABLES LIKE 'max_connections';)。
thread_cache_size:缓存空闲线程,减少创建开销。

113. 数据库表空间扩容策略

答案

独立表空间:直接扩展.ibd文件(需ALTER TABLE ... ALGORITHM=COPY)。
共享表空间:调整innodb_data_file_path并重启(不推荐)。

114. 数据库冷热数据分离中间件

答案

TiDB:HTAP数据库,自动分离冷热数据。
Citus:PostgreSQL扩展,支持分布式查询。

115. 数据库安全加固方案

答案

网络层:启用SSL加密传输(require_secure_transport=ON)。
应用层:使用预编译语句防止SQL注入。
数据层:启用透明数据加密(TDE)。

116. 数据库版本控制(Schema Migration)

答案

工具

Flyway:基于SQL脚本的版本控制。
Liquibase:支持XML/YAML格式变更。

117. 数据库故障注入测试

答案

场景

模拟磁盘故障(如dd if=/dev/zero of=/var/lib/mysql/ibdata1)。
注入网络分区(如iptables -A INPUT -s 192.168.1.100 -j DROP)。

118. 数据库性能基线(Baseline)

答案

指标

QPS/TPS:每秒查询/事务数。
响应时间:SHOW GLOBAL STATUS LIKE 'Avg_query_time'

工具Prometheus + Grafana可视化监控。

119. 数据库云原生部署

答案

方案

Kubernetes:使用Operator管理MySQL集群(如Presslabs/mysql-operator)。
Serverless:AWS Aurora Serverless或阿里云PolarDB。

120. 数据库面试总结:如何回答开放性问题?

答案

案例驱动:结合实际项目经验(如“在电商大促中,我通过分库分表将订单处理能力提升3倍”)。
深度优先:优先展示对底层原理的理解(如“InnoDB行锁通过记录锁和间隙锁实现可重复读”)。
结构化表达:使用“问题-分析-解决-总结”框架(如“遇到慢查询时,我通过EXPLAIN定位缺失索引,并添加复合索引优化”)。


以上题目及答案覆盖了MySQL面试的终极挑战,包括分布式事务、全局ID生成、云数据库、安全加固等前沿主题,助您全面备战,斩获Offer!

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容