首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL基础之事务

MySQL基础之事务

作者头像
yuanshuai
发布2022-08-22 15:34:34
发布2022-08-22 15:34:34
3350
举报
文章被收录于专栏:一只程序原一只程序原

-----------: | :--: | :--------: | :--: | | read uncommitted | √ | √ | √ | | read committed | × | √ | √ | | repeatable read | × | × | √ | | serializable | × | × | × |

mysql中默认 第三个隔离级别 repeatable read oracle中默认第二个隔离级别 read committed

1. 未提交读(Read uncommitted)。 (写加锁,读不加锁)

写操作加写锁,读操作不加锁。禁止第一类丢失更新,但是会出现所有其他数据并发问题。

** **

2.提交读(Read committed)。(写加锁,读加锁)

写操作加写锁,读操作加读锁。禁止第一类丢失更新和脏读。

就是你已经开始读了数据,然后一个事物开始写,然后写的事物不提交的话,是不能进行读的事物,避免了脏读。

3.可重复读(Read repeatable)。(写加锁,读加锁)

对于读操作加读锁到事务结束,其他事务的更新操作只能等到事务结束之后进行。和提交 读的区别在于,

提交读的读操作是加读锁到本次读操作结束,可重复读的锁粒度更大。禁止两类丢失更新,禁止脏读和不可 重复度,但是可能出现幻读.

一个事物读的时候,我们把两次读看成整体,在读的过程中,不允许写的操作,这样就可以禁止不可重复读。就是两次读操作不允许其他事物。

这是大部分关系数据库的默认 隔离级别。

4.序列化(Serializable)。(对表级读 写加锁)

五、如何设置

读操作加表级读锁至事务结束。可以禁止幻读。

查看隔离级别

代码语言:javascript
复制
select @@tx_isolation;

设置隔离级别

代码语言:javascript
复制
set session|global transaction isolation level 隔离级别;
代码语言:javascript
复制
开启事务的语句;

update 表 set 张三丰的余额=500 where name='张三丰'

update 表 set 郭襄的余额=1500 where name='郭襄' 

结束事务的语句;
代码语言:javascript
复制
SHOW VARIABLES LIKE 'autocommit';
SHOW ENGINES;

1.演示事务的使用步骤

代码语言:javascript
复制
#开启事务
SET autocommit=0;
START TRANSACTION;
#编写一组事务的语句
UPDATE account SET balance = 1000 WHERE username='张无忌';
UPDATE account SET balance = 1000 WHERE username='赵敏';

#结束事务
ROLLBACK;
#commit;

SELECT * FROM account;

2.演示事务对于delete和truncate的处理的区别

代码语言:javascript
复制
SET autocommit=0;
START TRANSACTION;

DELETE FROM account;
ROLLBACK;

3.演示savepoint 的使用

代码语言:javascript
复制
SET autocommit=0;
START TRANSACTION;
DELETE FROM account WHERE id=25;
SAVEPOINT a;#设置保存点
DELETE FROM account WHERE id=28;
ROLLBACK TO a;#回滚到保存点


SELECT * FROM account;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021.11.24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 未提交读(Read uncommitted)。 (写加锁,读不加锁)
  • 2.提交读(Read committed)。(写加锁,读加锁)
  • 3.可重复读(Read repeatable)。(写加锁,读加锁)
  • 4.序列化(Serializable)。(对表级读 写加锁)
  • 五、如何设置
    • 1.演示事务的使用步骤
    • 2.演示事务对于delete和truncate的处理的区别
    • 3.演示savepoint 的使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档