LOVEJOAN

文章 分类 评论
76 9 1453

站点介绍

人生是一场孤独的旅行,没有终点。。。

mysql-事务

chuck 2023-06-14 339 22条评论 数据库 mysql

首页 / 正文

事务

一组操作的集合,把所有操作作为一个整体进行提交或者撤销,要么同时成功或者同时失败。

事务操作

第一种方式修改当前回话的自动提交事务方式。

# 查看事务提交方式1为自动,0为手动
SELECT @@autocommit;
# 设置事务提交方式
SET @@autocommit = 0;
# 提交事务
COMMIT;
# 事务执行失败回滚事务
ROLLBACK;

第二种方式通过关键字开启事务。

# 开启事务
START TRANSACTION/BEGIN

# 提交事务
COMMIT

# 回滚事务
ROLLBACK;

事务的特性(ACID)

1.原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
2.一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
3.隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
4.持久性(Durability):事务一旦提交或回滚,它对数据库的数据改变就是永久的。

并发事务问题

问题现象
脏读一个事务读到另外一个事务还没有提交的事务
不可重复读一个事务先后读取同一条记录,但两次读取的数据不同,称为不可重复读。
幻读一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现数据已经存在。

事务隔离级别

为了解决事务并发问题

1.Read uncommitted(读未提交),可能出现脏读、不可重复读、幻读的问题,性能最高,数据安全性最差
2.Read commited(读已提交),可能出现不可重复读以及幻读问题
3.Repeatable Read(可重复读,默认隔离级别),可能出现幻读问题
4.Serializable(串行化),解决3个并发事务问题,性能最低,数据安全性最高

# 查看事务隔离级别
SELECT @@TRANSACTION_ISOLATION;
# 或者
SELECT @@tx_isolation;

# 设置事务隔离级别
SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL {Read uncommitted|Read commited|Repeatable Read|Serializable}

评论(22)

  1. 1 游客 2025-03-27 23:16 回复

    555

  2. 1 游客 2025-03-27 23:15 回复

    555

热门文章

最新评论

  • 1

    555fulIdEqZ' OR 160=(SELECT 160 FROM PG_SLEEP(15))--

  • 1

    555-1)) OR 58=(SELECT 58 FROM PG_SLEEP(15))--

  • 1

    555-1) OR 13=(SELECT 13 FROM PG_SLEEP(15))--

  • 1

    555-1 OR 475=(SELECT 475 FROM PG_SLEEP(15))--

  • 1

    555

  • 1

    555

  • 1

    5554FobGRsu') OR 696=(SELECT 696 FROM PG_SLEEP(15))--

  • 1

    555C9F0upP1' OR 504=(SELECT 504 FROM PG_SLEEP(15))--

  • 1

    555

  • 1-1; waitfor delay '0:0:15' --

    555

日历

2025年05月

    123
45678910
11121314151617
18192021222324
25262728293031

文章目录