Mysql数据库事务——概念篇

Mysql事务的定义
事务(transaction)是为保障数据操作可靠而独立执行的逻辑单元。
我们可以把事务理解为一组sql语句的集合,事务可以只包含一条sql语句,也能包含多条复杂的SQL语句,事务中的所有SQL语句被当作一个操作单元,也就是说,事务中的SQL语句要么都执行成功,要么全部执行失败,事务内的SQL语句被当做一个整体,被当做一个原子进行操作。

Mysql事务的特性
事务必须具备以下四个特性,简称ACID特性
原子性Atomicity:事务是不可分割的
一致性 Consistency:事务处理前后数据保持一致
隔离性 Isolation:事务处理必须是独立的彼此隔离
持久性 Durability:事务对数据库的修改被永久保存

Mysql事务提交方式
手动提交事务
自动提交事务

Mysql事务流程

在这里插入图片描述

管理事务的语句
开启事务 BEGIN
提交事务 commit
回滚事务 rollback

如何使用手动提交事务
转账过程

#开启事务(指定事务从此处开始)
BEGIN;
#转账:张三的账户少1000元
UPDATE my_account SET money = money-1000 WHERE name=‘张三’;
#李四的账户多1000元
UPDATE my_account SET money=money+1000 WHERE name=‘李四’;
#事务提交(指定事务在此结束)
COMMIT;

注:
事务前后数据总和一致,保证数据一致性

自动提交事务
查看事务状态

show variables like “autocommit”;

关闭自动提交

set autocommit = Off;
或set autocommit = 0;

开启自动提交

set autocommit =On
或set autocommit = 1;

串行化:

同时开启两个事务,当事务1执行的更新语句,此时事务2是查询不了该表的,因为事务1会施加一个写锁,因此事务2对该表的读请求会被阻塞。

读提交:

同时开启两个事务,事务1做的改动,在没提交的情况下,事务2看不到,当事务1提交了,事务2在没提交的情况下,也能看到;
这样就会出现不可重复读以及幻读的问题,比可重复读的问题更多,但是并发性更高!

读未提交:

同时开启两个事务,事务1只要多了数据更新,不管有没有提交,事务2也不关有没有提交,他都能看到更新后的数据!
当前事务能够看到被的事务中没有提交的数据,我们称之为‘脏读’!
当隔离级别处于读未提交的时候,其并发性是最强的,但是隔离性和安全性是最差的!

MySQL的事务相关概念 详细

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值