Mysql update 语句的执行流程,binlog 的作用和几种格式
时间: 2023-03-12 21:07:17 浏览: 62
MySQL 的 UPDATE 语句的执行流程:首先,MySQL 将执行 UPDATE 语句的原始查询编译成内部的数据结构,然后检查安全性,其次,MySQL 执行检索与更新操作,最后,MySQL 执行 binlog 日志记录,以实现一致性。Binlog 是二进制日志的简称,它是MySQL服务器用来记录数据变更的日志文件,其中包含了MySQL服务器中所有数据变更操作的记录,这些操作按照时间顺序记录在binlog文件中,用来实现数据库的数据一致性和容灾备份。MySQL的binlog文件支持三种格式,分别是 STATEMENT、ROW 和 MIXED。
相关问题
mysql的binlog文件格式
MySQL的binlog文件格式有两种:statement格式和row格式。
1. Statement格式:
在statement格式中,MySQL服务器会将所有执行的SQL语句记录到binlog文件中,包括SELECT语句。当需要恢复数据时,MySQL服务器会重新执行这些SQL语句,来恢复数据。这种格式的好处在于binlog文件比较小,但是存在一些限制,例如某些函数、随机值等并不能被记录下来。
2. Row格式:
在row格式中,MySQL服务器会将每一行数据的变化都记录到binlog文件中,包括INSERT、UPDATE、DELETE等操作。当需要恢复数据时,MySQL服务器会在恢复时重新执行相应的操作来恢复数据。这种格式的好处在于可以完整记录每一行数据的变化,但是binlog文件会比较大。
mysql redolog和binlog区别
MySQL的redolog和binlog都是用于保证数据一致性和恢复的机制。
redolog主要是用于事务的,记录的是InnoDB存储引擎的事务操作,如insert、update、delete等操作。红色日志是InnoDB自己独立维护的,只在内存中运行,也叫事务日志。在崩溃恢复时,InnoDB根据这个日志把数据重做一遍,在主从同步时也可以使用redolog。
binlog则是MySQL的二进制日志,将SQL语句记录下来,主要是用于记录SQL语句的执行顺序。二进制日志适合做主从复制,主库将日志传递给从库进行执行。从库执行时,相当于对主库跑了一遍这些SQL语句。
所以,redolog是记录数据修改信息,而binlog是记录SQL语句执行信息。