如果 redo log 只是预提交但不是 commit 状态 。这个时候就会去判断 binlog 是否完整 。如果完整就提交 redo log, 不完整就回滚事务 。
这样就解决了数据一致性的问题 。
三 总结
MySQL 主要分为 Server 曾和引擎层 。Server 层主要包括连接器、查询缓存、分析器、优化器、执行器 。同时还有一个日志模块(binlog) 。这个日志模块所有执行引擎都可以共用,redolog 只有 InnoDB 有 。
引擎层是插件式的 。目前主要包括 。MyISAM,InnoDB,Memory 等 。
查询语句的执行流程如下:权限校验(如果命中缓存)---》查询缓存---》分析器---》优化器---》权限校验---》执行器---》引擎
更新语句执行流程如下:分析器----》权限校验----》执行器---》引擎---redo log(prepare 状态---》binlog---》redo log(commit状态)
其他观点:
【mysql:一条SQL查询语句是如何执行的?】SET @update_stmt=''/*在单引号中间填入要执行的sql语句*/PREPARE stmt FROM @update_stmt;EXECUTE stmt;DEALLOCATE PREPARE stmt;
- 一条条造句 “一条”造句大全
- 六、七十年代生活在一条街的邻里相互了解、相处融洽、相互帮忙,现在为何缺少了那种氛围?
- sql是什么 怎么理解sql的意思
- 朋友圈一条杠是拉黑了吗 朋友圈一条杠是拉黑了吗
- sqlserver怎样连接到服务器 怎么链接其他服务器sql
- 如何卸载sqlserver2017 sql怎么卸载服务器
- sql如何注册 sql怎么注册服务器失败
- 两个村仅隔一条街拆迁补偿标准却天差地别,合理吗?
- sql2008服务器名称怎么查看 sql怎么知道服务器名
- 查看mysql服务器下所有数据库,sql语句是什么? mysql怎么看服务器
