MySQL事务
来源:互联网 发布:安装ubuntu分区不可用 编辑:程序博客网 时间:2024/06/05 04:51
一.什么是事务
事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。
事务的结束有两种,当事务中的所以步骤全部成功执行时,事务提交。如果其中一个步骤失败,将发生回滚操作,撤消撤消之前到事务开始时的所以操作。
二.事务的特性
原子性:组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分
一致性:在事务处理执行之前和之后,数据是一致的
隔离性:一个事务处理对另一个事务处理没有影响
持续性:当事务处理成功执行到结束的时候,其效果在数据库中被永久纪录下来
三.事务条件
数据库引擎为InnoDB
四.事务使用
1.直接把set autocommit = off 关闭自动提交(默认是开启的) 这样每条SQL语句都需要commit,不然是不会产生永久效果
2.使用begin,commit,rollback,来启动,提交,回滚一个事务;
推荐使用2 eg:
begin;SQL Sentence1;savepoint s1;SQL Sentence2;savepoint s2;SQL Sentence3;savepoint s3//commit;// rollback to savpoint s1 (回到SQL Sentence1;后的状态,想要产生永久效果,在回滚到具体一个点后,仍需要commit) || rollback 就是直接回滚到最开始的状态
五.事务的隔离级别
1.Read Uncommitted-------出现脏读,不可重复读和幻读
2.Read Committed----------出现不可重复读和幻读
3.Repeatable Read---------出现幻读(MySQL默认隔离级别)
4.Serializable-----------------影响MySQL效率,变成单线程的访问机制
脏读:读取到未提交的数据。
不可重复读:同一个事务里面的相同查询不一致(读取的行数据,可以更改)
幻读:同一个事务里面的相同的查询结果集[主要指是针对一个范围的查询,eg:查询行数]不一致(读取的行数据,不可以更改,但可以插入新的数据)
1.查看当前会话隔离级别
select @@tx_isolation;
2.查看系统当前隔离级别
select @@global.tx_isolation;
3.设置当前会话隔离级别
set session transaction isolatin = 'repeatable read';
4.设置系统当前隔离级别
set global transaction isolation = 'repeatable read';
参考链接:http://www.iteye.com/topic/322382
隔离并不改变锁本身的行为,而是通过实行不同的锁机制实现的。比如是否加锁,加多长时间的锁,加什么类型的锁等。同时,也会影响排它情况下的可见性
在MyISAM 里面没有实物,但同样可以通过加锁的方式,实现事务,事务的隔离
- mysql事务是事务
- mysql 事务
- mysql 事务
- mysql事务
- Mysql 事务
- mysql事务
- mysql事务
- mysql 事务
- mysql事务
- mysql 事务
- mysql事务
- MySQL事务
- mysql---事务
- MySQL事务
- Mysql事务
- mysql事务
- mysql-事务
- Mysql事务
- Two-stage rotation animation is deprecated. This application should use the smoother single-stage an
- Screen命令使用指南
- 最短路四种算法
- IOS后台运行 之 后台播放音乐
- apk反编译步骤
- MySQL事务
- [Leetcode 179, Medium] Largest number
- 利用OpenCV检测图像中的长方形画布或纸张并提取图像内容
- 对java语言"完全"面向对象的理解
- Yaf整合Smarty模板引擎
- android的canvas简单实用
- 一天一命令,天天五分钟(cat, tac, nl的命令用法)
- HDU 2066 一个人的旅行
- opendir,closedir,readdir ,telldir的·使用详解及例子