面试题答案
一键面试- 分析慢查询日志确定查询瓶颈
- 优化方向:查询语句优化。
- 具体操作:
- 从慢查询日志中找出执行时间长的SQL语句,例如使用
EXPLAIN
关键字分析查询执行计划,查看索引使用情况、表连接方式等。如果发现全表扫描,可通过添加合适的索引来优化。比如对于SELECT * FROM users WHERE username = 'test';
,若执行缓慢,可为username
字段添加索引CREATE INDEX idx_username ON users (username);
。
- 从慢查询日志中找出执行时间长的SQL语句,例如使用
- 结合查询缓存情况分析
- 优化方向:调整查询缓存配置。
- 具体操作:
- 查看查询缓存命中率,如果命中率低,可能需要考虑增大查询缓存大小,通过修改MySQL配置文件(如
my.cnf
)中的query_cache_type
和query_cache_size
参数来调整。例如将query_cache_type
设为1(开启),query_cache_size
适当增大,重启MySQL服务使配置生效。
- 查看查询缓存命中率,如果命中率低,可能需要考虑增大查询缓存大小,通过修改MySQL配置文件(如
- 优化方向:调整查询以更好利用缓存。
- 具体操作:确保查询语句是完全相同的,因为查询缓存是基于完全相同的SQL语句进行缓存的。避免在查询中使用函数、变量等可能导致缓存不命中的情况。例如将
SELECT * FROM orders WHERE order_date = CURDATE();
改为SELECT * FROM orders WHERE order_date = '2024 - 01 - 01';
(假设当天日期是2024 - 01 - 01 ),这样更可能命中查询缓存。