博客
关于我
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多表关联on和where速度对比实测谁更快
查看>>
MySQL多表左右连接查询
查看>>
mysql大批量删除(修改)The total number of locks exceeds the lock table size 错误的解决办法
查看>>
mysql如何做到存在就更新不存就插入_MySQL 索引及优化实战(二)
查看>>
mysql如何删除数据表,被关联的数据表如何删除呢
查看>>
MySQL如何实现ACID ?
查看>>
mysql如何记录数据库响应时间
查看>>
MySQL子查询
查看>>
Mysql字段、索引操作
查看>>
mysql字段的细节(查询自定义的字段[意义-行列转置];UNION ALL;case-when)
查看>>
mysql字段类型不一致导致的索引失效
查看>>
mysql字段类型介绍
查看>>
mysql字段解析逗号分割_MySQL逗号分割字段的行列转换技巧
查看>>
MySQL字符集与排序规则
查看>>
MySQL字符集乱码
查看>>
mysql存储IP地址的数据类型
查看>>
mysql存储中文 但是读取乱码_mysql存储中文乱码
查看>>
MySQL存储引擎--MyISAM与InnoDB区别
查看>>
mysql存储总结
查看>>
mysql存储登录_php调用mysql存储过程会员登录验证实例分析
查看>>