mysql事务
2015-11-06 20:30
375 查看
事务:一组sql语句操作单元,组内所有sql语句完成一个业务.注意只有innodb和bdb可以使用事务安全
如果整组成功则意味着全部sql语句都实现。如果其中任何一个失败,意味着整个操作失败。失败意味着整个过程都是没意义的,数据库应该回到最初始的状态。上面的特性,就是事务。
如何处理:失败后,可以回到开始位置、没有成功之前,别的用户(进程,对话)是不能看到操作内的数据修改的
思路:就是在一组操作之前,设计一个记号(备份点)。操作成功就让别人看到数据的修改,如果失败别人就不能看到修改,而且回到记号位置。
实现:利用innodb存储引擎的事务日志功能。
sql执行分为2个阶段:一个是执行阶段一个是将执行结果提交到数据库的阶段。其中我们的事务日志,就是保存执行阶段的结果。如果可以用,则将执行的结果提交到数据库
数据库默认的执行方式是:自动提交(autocommit)。执行完后自动完成提交工作。想要完成事务安全就需要关闭自动提交功能。set autocommit=0;
例:交班费业务30元:包含两条sql语句update `sm_student` set `s_money`=`s_money`-30 where id=1; update `class` set `c_money`=`c_money`+30 where id=1;
关闭自动提交后执行update语句本mysql服务器端显示少了30而另一个进程则会显示没有减少。
在此基础上执行所有的sql语句判断是否成功(出现错误,语法错误或逻辑错误或服务器错误)。成功:结果提交commit 失败:回到开始位置rollback。
提交commit:这次sql操作执行完毕
返回rollback:这次sql操作无效返回到开始值
常见的事务指令:开启事务:start transaction;关闭自动提交,如果事务结束了。成或败它都会将自动提交机制设为初始状态。
事务特点:原子性(不可拆分)、一致性(数据锁定)、隔离性、持久性 ACID
如果整组成功则意味着全部sql语句都实现。如果其中任何一个失败,意味着整个操作失败。失败意味着整个过程都是没意义的,数据库应该回到最初始的状态。上面的特性,就是事务。
如何处理:失败后,可以回到开始位置、没有成功之前,别的用户(进程,对话)是不能看到操作内的数据修改的
思路:就是在一组操作之前,设计一个记号(备份点)。操作成功就让别人看到数据的修改,如果失败别人就不能看到修改,而且回到记号位置。
实现:利用innodb存储引擎的事务日志功能。
sql执行分为2个阶段:一个是执行阶段一个是将执行结果提交到数据库的阶段。其中我们的事务日志,就是保存执行阶段的结果。如果可以用,则将执行的结果提交到数据库
数据库默认的执行方式是:自动提交(autocommit)。执行完后自动完成提交工作。想要完成事务安全就需要关闭自动提交功能。set autocommit=0;
例:交班费业务30元:包含两条sql语句update `sm_student` set `s_money`=`s_money`-30 where id=1; update `class` set `c_money`=`c_money`+30 where id=1;
关闭自动提交后执行update语句本mysql服务器端显示少了30而另一个进程则会显示没有减少。
在此基础上执行所有的sql语句判断是否成功(出现错误,语法错误或逻辑错误或服务器错误)。成功:结果提交commit 失败:回到开始位置rollback。
提交commit:这次sql操作执行完毕
返回rollback:这次sql操作无效返回到开始值
常见的事务指令:开启事务:start transaction;关闭自动提交,如果事务结束了。成或败它都会将自动提交机制设为初始状态。
事务特点:原子性(不可拆分)、一致性(数据锁定)、隔离性、持久性 ACID
相关文章推荐
- Navicat 无法连接MySQL数据库
- mysql操作查询结果case when then else end用法举例
- MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
- 使用MySQL正则表达式 __MySQL必知必会
- MYSQL 行级锁
- mysql宽字符注入
- MySQL 数据类型
- MySQL合并查询到的相同字段的值
- MySQL查询优化-explain
- mysql的常用优化知识
- 今天有事-MySQL
- mysql sql语句查询时给某个空字段赋值case ... when ...
- mysql分表操作
- mysql-5.5.29-win32压缩版配置数据库,字符集设置,服务设置 .
- windows上MySQL-5.6.27解压缩安装和配置
- MySQL5.7重置root密码
- MySQL5.7重置root密码
- 小白学习mysql之函数
- MySQL索引类型 btree索引和hash索引的区别
- 一台机器安装多个MySQL