首页 > 数据库 > > 2 一条SQL更新语句的执行过程?
更新一个简单的sql语句:
mysql> update user set age='23' where id='1';在上一章中的查询流程,更新流程基本会走一遍。区别在于:
redo log --InnoDB持有的日志
MySQL每一次更新操作都需要写进磁盘,磁盘也要找到对应的记录,再更新,整个过程IO成本,查找成本都很高。
MySQL采用WAL(Write-Ahead Logging)技术,先写日志,再写磁盘来提高该效率。
//查看redo log的大小
mysql> show variables like 'innodb_log%';
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| innodb_log_buffer_size | 16777216 |
| innodb_log_checksums | ON |
| innodb_log_compressed_pages | ON |
| innodb_log_file_size | 50331648 |
| innodb_log_files_in_group | 2 |
| innodb_log_group_home_dir | ./ |
| innodb_log_write_ahead_size | 8192 |
//设置后重启数据库生效
binlog --Server层的日志


两阶段提交
举例说明:怎样让数据库恢复到半个月内任意一秒的状态?
如某天下午2点发现中午十二点有一次勿删表,需要找回数据。怎么做呢?1. 找最近一次的全量备份,运气好的话,找到前天晚上的一个备份,从这个恢复到临时库
2. 从备份点的时间开始,将备份的binlog依次取出,重放到中午误删操作前的那刻
在什么场景下,一天一备会比一周一备更有优势呢?
本文是通过学习极客时间“MySQL实战45讲”,做的学习笔记,有错误的地方,请网友提出,大家共同学习,后续陆续更新!扫描下方二维码,可以共同学习。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3130207/ ,如需转载,请注明出处,否则将追究法律责任。