每天一套面试题Day14-京东高频(3)
15.如何评估 / 判断索引是否生效?常见索引失效场景有哪些?
评估索引是否生效需“三看”:看执行计划是否命中索引(EXPLAIN)、看扫描行数是否骤降(rows)、看查询耗时是否锐减(性能监控);
失效:
- 索引列用函数/参与计算
- 最左前缀原则
- LIKE以通配符 % 开头
- 使用 OR 连接条件,如果 OR 连接的条件中有一个列没有索引,那么整个查询可能无法使用索引。
- 使用 NOT IN, <>, != 操作符 这些否定操作符通常难以利用索引,因为它们代表的是一个非常大的范围,数据库倾向于全表扫描。
16.SQL 调优常见方法有哪些?
一个复杂的sql拆成多个 覆盖索引
我的博客 先监控发现慢SQL,然后通过EXPLAIN分析执行计划,接着从索引和SQL语句本身这两个成本最低的方面入手进行优化。如果这些手段都达到了瓶颈,最后才会考虑读写分离、分库分表等架构层面的方案。
17.如何监控并优化慢 SQL?
监控日志,expain 优化:创建索引
开启SQL慢查询日志 分析查询计划 优化索引 调整查询结构:首选:把 SELECT * 改成明确的列。检查:WHERE 子句中的字段是否被函数包裹,导致索引失效。尝试:用 JOIN 改写复杂的子查询。考虑:将过于复杂的查询拆分成多个简单查询。
18,redo log / undo log / binlog 各自作用?
redo,恢复事务 undo log记录的是相反的命令。在事务执行失败的时候,可以进行回滚。 binlog 二进制,用于恢复
- Redo Log(重做日志)崩溃恢复(Crash Recovery),提高写入性能
- Undo Log(回滚日志)事务回滚,实现 MVCC(多版本并发控制)
- Binlog(二进制日志)主从复制(Replication),数据恢复
19.MySQL 中的 MVCC 是什么?Read View 在 MVCC 中如何工作?如果没有 MVCC 会怎样?
MVCC 是 InnoDB 实现高并发的核心技术,它通过维护数据的多个版本来让读写操作不再相互等待。 Read View 是 MVCC 的“裁判”,它定义了一套清晰的规则,来决定在某个特定时刻,一个事务能看到哪些数据版本。 没有 MVCC,读写冲突加剧、性能骤降、死锁频发。
20.事务隔离级别有哪些?
我的博客 读未提交,读已提交,可重复读,串行化
#面试真题#每日一套面试真题 文章被收录于专栏
记录刷过的面试真题
查看5道真题和解析
