mysql 事务

事务由一组sql语句组成
事务的sql语句整体成功,整体失败

A:100 B:0-> A:0 B:100
-- A转账B
update 账户 set money=money-100
where id='A';
update 账户 set money=money+100
where id='B';
-- 转账要么同时成功,要么同时失败(只要有一个失败就)回到转账执行之前的状态

数据操作的最小单元是事务,而不是sql语句

事务的操作

不启动事务是单条的sql语句的成功与失败(某条sql语句失败,前面的操作不恢复)
启动事务后,执行sql语句,中间某条sql语句失败,它前面的操作还可恢复,这种恢复以前的状态叫回滚,回滚到事务之前。
启动事务
begin

start transaction
事务启动后,执行的增删改操作,会暂时记录在一个日志文件中(临时记录)。
提交事务
commit
提交事务后,事务日志中的记录数据操作在数据表中生效,并清空日志文件。
回滚事务
rollback
直接清空日志

commit用法

rollback用法

事务的特性
A——原子性Atomic
数据操作的最小单元是事务,而不是sql语句
C——致性Consistency
一致性,事务完成前后,数据要保持逻辑的一致性

A+B=100转账前
A+B=100转账后

I——隔离性Isolation
一个事务操作时,其他事务要等待。
一个事务修改数据,另一个事务不能修改,这两个事务要进行隔离。
事务并不是完全隔离的(效率低),数据库为了兼顾并发性和数据安全,一定程度上允许事务并发执行,并设置了隔离的级别。
D——Durancy
持久性,事务成功,数据被永久的保存

数据访问冲突的问题

多个事务同时执行,可能引发三种数据访问冲突问题:
1.脏数据
2.不可重复读
3.幻觉读

1.脏数据
一个事务未提交的数据(临时保存在内存文件中,表里还没保存,有可能在未来失效)(或者修改数据,没修改完),被另一个事务查询到
2.不可重复读
数据每次读取的结果一致叫可重复读。
针对数据修改的update操作
查询过的数据(数据被别的事务修改并提交了)再次查询时,与之前的查询结果不一致
3.幻觉读
针对数据的插入和删除操作:
新插入的数据,查询不到
删除的数据,能查询到(看到不该看的东西)

隔离级别
为了避免数据访问冲突问题,避免数据的混乱,数据库会让事务进行隔离(别让事务同时执行,保证数据安全)
为了兼顾数据安全和性能数据库提供了四种隔离级别
级别越高越安全,性能越差
级别越低越不安全,性能越高

mysql设置隔离级别

set tx_isolation='read-uncommitted';

1.未提交可读-脏读,不可重复读,幻觉读

set tx_isolation='read-committed';

2.提交可读-不可重复读,幻觉读

 set tx_isolation='repeatable-read'; --默认级别

3.可重复读-幻觉读(默认级别,最佳选择)

set tx_isolation='serialiable';

4.串行化-排列执行(级别最高)

read-uncommitted

这样导致了脏读


read-committed

这样导致了不可重复读


repeatable-read

这样导致了幻觉读,新插入的数据看不到
repeatable-read

这样导致了幻觉读,假更新了删除的数据,commit后才发现数据早就被删除了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 事务的定义 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元...
    诸葛坚强阅读 4,765评论 0 3
  • 来源转载自:http://www.cnblogs.com/ymy124/p/3718439.html MySQL的...
    Mrwangs阅读 5,934评论 0 8
  • 1、 数据库事务的概念 在数据库中,所谓事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。 为确保数据库...
    AKyS佐毅阅读 2,271评论 0 2
  • 人心向善,明天要回家了,我妈昨天打电话过来说要带盒尿布回家,怕又忘记了,从复一遍,
    蚂蚁背象阅读 1,328评论 0 0
  • 我近期最想实现的一个愿望或目标是:看到儿子中考超常发挥,身心愉悦地跨入重点高中二中。所以我的咖啡冥想内容: 今天早...
    叶景芳阅读 1,193评论 0 0

友情链接更多精彩内容