《mysql—事务处理》要点:
本文介绍了mysql—事务处理,希望对您有用。如果有疑问,可以联系我们。
事务是由一系列的的sql语句组成的执行单元,主要用于处理操作量大,复杂度高的数据.
并非所有的引擎都支持明确的事务处理管理,MyISAM和InnoDB是两种常使用的引擎,前者不支持明确的事务处理,后者支持,在创建表的时候要注意设置的引擎类型.可以通过命令show create table #表名# 来查看引擎类型,当要修改表引擎时,可以使用 alter table #表名# engine=innodb; 来实现.
事务的处理必需满足ACID原则,也就是原子性(A)、一致性(C)、隔离性(I)、和持久性(D).
1、原子性(atomicity):事务必需数据库的逻辑工作单元,成批的mysql语句要么全执行,要么全不执行.
2、一致性(consistency):事务在完成时,必须使所有的数据都坚持一致状态.如果系统运行中发生故障,有些事务尚未完成被迫中断,这些未完成的事务对数据库所做的修改有一部分已写入物理数据库,此时数据库处于一种不一致的状态.
3、隔离性(isolation):一个事务的执行不能被其他事务干扰.即一个事务内部的操作和使用的数据对其他并发事务是隔离的,并发执行的各个事务间不能互相干扰.
4、持久性(durability):一个事物一旦提交,则它对数据库中数据的改变是永久的.即使以后系统故障也不应该对其执行结果有任何影响.
因此,事务的ACID原则保证了事务提交后或者成功执行,或者失败回退,二者必居其一,所以它对数据的修改具有可恢复性,当事务失败了,数据可以恢复到该事务执行前的状态.另外事务还可以避免语句被部分执行造成数据不一致的情况的发生.
事务的类型:系统提供的事务和用户定义的事务.
系统提供的事务是指在执行某些sql语句时,一条语句就构成了一个事务,例如:alter table、create、delete、drop、insert、update、select...等等.
在实际应用中大量使用的是用户定义的事务.事务的定义办法:用begin|start transaction指定一个事务的开始,用commit或rollback语句表名一个事务的结束.必须明确指定事务的结束,否则系统将把从事务开始到用户关闭连接之间的所有操作当成一个事务来处理.
事务术语:
事务(transaction):一组sql语句
回退(rollback):撤销指定sql语句的过程;
提交(commit):将未存储的sql语句结果写入数据库表;
保存点(savepoint):指事务处理中在某一个位置设置的临时标记点,你可以回退到这里.对于复杂的事务处理时实现部分提交或回退.
控制事务处理:
事务开启:start transaction | begin
保存点:savepoint #名称#
撤退到保存点:rollback to #名称#
回滚事务:rollback
事务提交:commit
更改默认的提交行为:
mysql行为是自动提交所有修改,也便是执行了sql语句会直接修改表的.为了mysql不自动提交更改,可以使用set autocommit=0来操作.查看默认的提交模式:show variables like 'autocommit'.在事务处理完之后再设置回来:set autocommit=1.
维易PHP培训学院每天发布《mysql—事务处理》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/7087.html