当前位置:  数据库>mysql

MYSQL事务回滚的2个问题分析

    来源: 互联网  发布时间:2014-10-14

    本文导语:  因此,正确的原子操作是真正被执行过的。是物理执行。 在当前事务中确实能看到插入的记录。最后只不过删除了。但是AUTO_INCREMENT不会应删除而改变值。 1、为什么auto_increament没有回滚? 因为innodb的auto_increament的计数器记录...

因此,正确的原子操作是真正被执行过的。是物理执行。

在当前事务中确实能看到插入的记录。最后只不过删除了。但是AUTO_INCREMENT不会应删除而改变值。

1、为什么auto_increament没有回滚?

因为innodb的auto_increament的计数器记录的当前值是保存在存内存中的,并不是存在于磁盘上,当mysql server处于运行的时候,这个计数值只会随着insert改增长,不会随着delete而减少。而当mysql server启动时,当我们需要去查询auto_increment计数值时,mysql便会自动执行:SELECT MAX(id) FROM 表名 FOR UPDATE;语句来获得当前auto_increment列的最大值,然后将这个值放到auto_increment计数器中。所以就算 Rollback MySQL的auto_increament计数器也不会作负运算。

2、MySQL的事务对表操作的时候是否是物理操作?

MySQL的事务是有redo和undo的,redo操作的所有信息都是记录到 redo_log中,也就是说当一个事务做commit操作时,需要先把这个事务的操作写到redo_log中,然后再把这些操作flush到磁盘上,当 出现故障时,只需要读取redo_log,然后再重新flush到磁盘就行了。

而对于undo就比较麻烦,MySQL在处理事务时,会在数据共享 表空间里申请一个段叫做segment段,用保存undo信息,当在处理rollback,不是完完全全的物理undo,而是逻辑undo,就是说会对之 前的操作进行反操作,但是这些共享表空间是不进行回收的。这些表空间的回收需要由mysql的master thread进程来进行回收。


    
 
 

您可能感兴趣的文章:

  • 解析mysql二进制日志处理事务与非事务性语句的区别
  • MySQL C API中有没有事务处理的函数啊?
  • mysql 事务 回滚 提交
  • 基于mysql事务、视图、存储过程、触发器的应用分析
  • 为mysql数据库添加添加事务处理的方法
  • Mysql中的事务是什么如何使用
  • javascript开源软件 iis7站长之家
  • mysql 锁表锁行语句分享(MySQL事务处理)
  • mysql 事务处理及表锁定深入简析
  • MySql的事务使用与示例详解
  • python连接mysql并提交mysql事务示例
  • PHP中执行MYSQL事务解决数据写入不完整等情况
  • MySql事务无法回滚的原因有哪些
  • MySQL事务处理与应用简析
  • mysql的XA事务恢复过程详解
  • MySQL数据库事务隔离级别介绍(Transaction Isolation Level)
  • 利用mysql事务特性实现并发安全的自增ID示例
  • MySQL存储过程例子(包含事务,输出参数,嵌套调用)
  • mysql存储过程事务管理简析
  • MySQL InnoDB之事务与锁详解
  • Mysql大表查询优化技巧总结及案例分析
  • MySQL优化分析器 mysqloa
  • php的慢速日志引起的Mysql错误问题分析
  • MySQL抛出Incorrect string value异常分析
  • MySQL DNS的使用过程详细分析
  • Mysql索引会失效的几种情况分析
  • mysql中limit的用法深入分析
  • mysql执行时间为负数的原因分析
  • 基于MySQL数据库复制Master-Slave架构的分析
  • mysql技巧之select count的区别分析
  • MySQL InnoDB和MyISAM数据引擎的差别分析
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c++中关于#include <mysql/mysql.h>的问题?
  • linux 下mysql 以root和普通用户进入mysql的问题
  • 我的是mandrake8.2,已经安装了mysql,请教一个菜鸟问题,怎么操作才能进入mysql,然后建库!
  • 在线请教:linux下用MySQL C API 连接MySQL 4.1.12出现的连接问题,提示升级客户端!!!!!!
  • radius mysql问题 rlm_sql_mysql.so 这个文件我怎么都没有找到
  • mysql安装问题菜鸟问题
  • Apache 1.3.22/Tomcat 4.0.4/Mysql 3.23/mm.mysql.jdbc-2.0pre5的中文乱码问题
  • apache+tomcat3.2.3+mm.mysql+mysql3.22+jdk1.3.1中文问题,急!!!!分不够还可以再加..
  • java 和 mysql的问题?初级问题!
  • mysql4.0升级到mysql5(4.1),解决字符集问题
  • MySQL远程连接丢失问题解决方法(Lost connection to MySQL server)
  • 关于mysql的问题
  • php连接mysql二种方法 mysql乱码问题
  • MySQL的用户问题,菜鸟提问
  • 重新restore了mysql到另一台机器上后mysql 编码问题报错
  • Centos 6.3将Mysql 5.1.61升级为mysql 5.6.19遇到的问题及解决方式
  • Cygwin连接MySQL问题
  • 请教mysql的问题
  • 关于linux中MySql的安装问题
  • Linux9.0下安装MySQL的问题(在线等)急!
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 在 linux下输入"mysql"命令,进入mysql命令行,但出现“Can't connetc to local MySQL server thuough socket /var/lib/mysql/mysql.sock
  • Mysql查询错误:ERROR:no query specified原因
  • MySQL 重装MySQL后, mysql服务无法启动
  • php安装完成后如何添加mysql扩展
  • 为什么用linux安装盘安装了mysql后,启动mysql,提示找不到mysql.sock文件?
  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • 請教,在redhat linux7.2+mysql 中,系統提示mysql已啟動,網頁卻不能訪問mysql?
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • 求解释: useradd -g mysql mysql -d /home/mysql -s /sbin/nologin
  • MySQL Workbench的下载安装与使用教程


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3