博客
关于我
mysql查询过程
阅读量:796 次
发布时间:2023-02-13

本文共 1208 字,大约阅读时间需要 4 分钟。

Mysql数据库基础知识总结

1. Mysql查询流程简述

Mysql接收一个查询请求后,首先会检查查询缓存。查询缓存存储了之前执行过的语句,这样可以快速返回结果,减少不必要的处理时间。如果查询未命中缓存,就进入后续处理流程。

需要注意的是,任何对表格的更新操作都会清空查询缓存。从Mysql8.0开始,查询缓存已经被移除。

在查询流程中,Mysql会依次执行以下步骤:

  • 词法分析:解析语句的结构,识别关键字、表名、列名等。

  • 语法分析:检查语句的语法是否正确,找出错误并提示位置。

  • 优化器:确定最优执行方案,例如选择合适的索引和执行顺序。

  • 执行器:实际执行SQL语句,完成数据操作。

2. Mysql数据库日志种类及作用

Mysql数据库中的日志主要有以下几种:

  • Binlog日志:记录所有DML操作(插入、更新、删除、截断、创建),不记录SELECT语句。主要用于数据复制和恢复。

  • Redo Log日志:记录物理页的修改,用于事务持久化,确保数据在崩溃后能恢复到一致状态。

  • Undo Log日志:用于事务回滚和多版本控制(MVCC),记录操作前的数据状态,支持精确回滚。

3. Binlog介绍

Binlog记录了数据库表结构和数据变更,主要用于主从复制和数据恢复。企业常采用一主多从架构,通过Binlog实现数据同步。

Binlog的主要作用包括:

  • 数据复制:从服务器与主服务器保持一致。

  • 数据恢复:在数据库故障时,利用Binlog恢复数据。

4. Redo Log介绍

Redo Log记录了在内存中修改的物理页信息,确保数据持久化。Mysql在内存修改数据后,先写入Redo Log,再写到磁盘。Redo Log采用顺序IO模式,写入速度快,恢复速度快。

Redo Log的主要优势包括:

  • 保证数据持久化:防止数据库崩溃导致数据丢失。

  • 恢复速度快:Redo Log文件体积小,恢复过程快速完成。

5. Binlog与Redo Log区别

Binlog和Redo Log在用途和内容上有明显区别:

  • Binlog记录逻辑变化:记录DML操作日志,适合用于复制和恢复。

  • Redo Log记录物理变化:记录具体页修改内容,用于数据持久化。

二者的主要区别在于:

  • Binlog用于数据复制,Redo Log用于数据持久化。

  • Binlog在事务提交时记录,Redo Log在事务开始时记录。

  • 两者在事务提交时需要保持一致性,MySQL通过两阶段提交保证一致性。

6. Undo Log介绍

Undo Log用于事务回滚和MVCC,记录操作前的数据状态。它与Redo Log不同,主要用于逻辑回滚和版本控制。

Undo Log的主要作用包括:

  • 回滚支持:允许在事务失败时精确回滚操作。

  • MVCC实现:通过版本控制,确保读写不阻塞。

Undo Log存储逻辑日志,与Redo Log物理日志不同,主要用于事务管理和数据恢复。

转载地址:http://ridfk.baihongyu.com/

你可能感兴趣的文章
MySQL常用日期格式转换函数、字符串函数、聚合函数详
查看>>
MySQL常见错误分析与解决方法总结
查看>>
MySQL底层概述—2.InnoDB磁盘结构
查看>>
MySQL底层概述—3.InnoDB线程模型
查看>>
MySQL底层概述—5.InnoDB参数优化
查看>>
MySQL底层概述—6.索引原理
查看>>
MySQL底层概述—7.优化原则及慢查询
查看>>
MySQL底层概述—8.JOIN排序索引优化
查看>>
MySQL底层概述—9.ACID与事务
查看>>
Mysql建立中英文全文索引(mysql5.7以上)
查看>>
mysql建立索引的几大原则
查看>>
Mysql建表中的 “FEDERATED 引擎连接失败 - Server Name Doesn‘t Exist“ 解决方法
查看>>
MySQL开源工具推荐,有了它我卸了珍藏多年Nactive!
查看>>
MySQL异步操作在C++中的应用
查看>>
Mysql当前列的值等于上一行的值累加前一列的值
查看>>
MySQL当查询的时候有多个结果,但需要返回一条的情况用GROUP_CONCAT拼接
查看>>
MySQL必知必会(组合Where子句,Not和In操作符)
查看>>
MySQL必知必会总结笔记
查看>>
MySQL快速入门
查看>>
MySQL快速入门——库的操作
查看>>