什么是慢查询?原因是什么?可以怎么优化?
慢查询是指查询时间超过指定时间的语句。
原因:
- 查询语句比较复杂,包含复杂的表连接和子查询。
- 查询的数据量比较庞大。
- 缺少索引。或者没有走索引走的是全表扫描。
- 数据库设计不合理。数据库表比较大。
- 并发资源冲突。多个并发进程访问相同资源导致冲突等待。
优化:
- 开启慢查询日志,定位比较慢的 sql 语句。
- 通过 explain 执行计划分析 sql 语句有没有有没有使用索引和连接的表。从而优化sql 语句。
- 查询区分度较高的字段。
undo log、redo log、binlog 有什么用?
- undo log(回滚日志):是 InnoDB 存储引擎层生成的日志,是一种逻辑日志。记录的是 DML 语句的逆操作。用于事务回滚和 MVCC。
- redo log(重做日志):是一种物理日志。记录的是数据页上的数据修改。用于实现事务的持久性。
WAL(Writing Ahead Logging):日志先行
- binlog(归档日志):是所有存储引擎通用的日志,是 Server 层上的日志。是一种逻辑日志。记录的是除了 SELECT 和 SHOW 之外的数据库表结构变更和表数据修改的操作。用于数据备份和主从复制。
1697

被折叠的 条评论
为什么被折叠?



