命令行mysql回退_mysql-管理事务 - osc_mi06gsf5的个人空间 - OSCHINA - 中文开源技术交流社区...

一、介绍

mysql支持几种基本的数据库引擎,其中MYSQL的两种最基本的引擎MyISAM和InnoDB,其中只有InnoDB支持事务管理。

事务处理:可以用来维护数据库的完整性,他保证成批的MySQL操作要么完全执行,要么不完全执行。

事务处理是一种机制,用来管理必须成批执行的MYSQL操作,以保证数据库不包含不完整的操作结果。

二、事务的几个基本术语

事务(transaction):指一组SQL语句

回退(rollback):指撤销指定SQL语句的过程

提交(commit):指将未存储的SQL语句结果写入数据库表。

保留点(savepoint):指事务处理中设置的临时占位符,你可以对它发布回退(与回退整个事务处理不同)

三、控制事务处理

事务开始:

start transaction;

1、使用ROLLBACK:MySQL用这个命令来回退(撤销)MySQL语句:

select * from ordertotal;

start transaction;

delete from transaction;

select * from ordertotals;

rollbaclk;

select * from ordertotals;

虽然已经删除数据,但是我们在提交之前使用了rollback,那么在进行查询的时候,已经删除了的数据又恢复了。

rollback只能在一个事务处理内使用,事务处理用来管理insert,update和delete语句,而select,create,drop等都不能使用事务管理。

2、使用commit:在事务处理中,提交并不会隐含的进行,为进行明确的提交,使用commit语句。

start transaction;

delete from orderitems where order_num=20010;

delete from orders where order_num=20010;

commit;

3、使用保留点:简单的rollback和commit语句就可以写入或撤销整个事务处理,但是更复杂的事务处理可能需要部分提交或回退。

为了支持回退部分事务处理,必须能在事务处理块中合适的位置放置占位符,这样需要回退,可以回退到某个占位符。

savepoint delete1;

rollback to delete1;

4、更改默认的提交方式

默认的mysql行为是自动提交所有的改动,但是你可以设置Mysql不自动提交修改,如下:

set autocommit=0;

三、事务隔离级别

事务隔离性:是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

1、串行化(Serializable):所有事务一个接一个执行,这样可以避免幻读(phantom read),对于基于锁来实现的并发控制的数据库来说,串行化要求在执行范围查询的时候,需要获取范围锁,如果不是基于锁实现并发控制的数据库,则检查到有违反串行操作的事务时,需回滚该事务。

2、可重复读(repeated read):所有被select获取的数据都不能被修改,这样就可以避免一个事务前后读取不一致的情况。但是没有办法控制幻读,因为这个时候事务不能更改所选的数据,但是可以增加数据,因为强恶意事务没有范围锁。(事务a读取数据,事务b可以同样读取,不可以更改数据,但是可以增加数据)

3、读已提交(read commit):被读取的数据可以被其他事务修改,这样可能导致不可重复读,也就是说,事务读取的时候,获取读锁,但是在读完之后立即释放(不需要等事务结束),而写锁则是事务提交之后才释放的,释放读锁之后就可能被其他事务修改数据。改等级也是sql server默认的隔离等级。(事务a读取数据,事务b不可以读取数据,事务b可以修改数据)

4、读未提交(read uncommitted):最低的隔离等级,允许其他事物看到没有提交的数据,会导致脏读。

总结:1、四个级别逐渐增强,每个级别解决一问题;

2、事务级别越低,性能越差,大多数环境read committed就可以用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值