MySQL——事务(错误修正)

是什么

必须被原子地执行的一个或多个数据库操作的集合,事务用于保证数据的一致性。

当执行事务操作时,mysql会在表上加锁,防止其他操作对表进行修改。

事务的特性ACID

原子性Atomicity

一致性Consistency

隔离性Isolation

持久性Durability

事务操作

-- 开始事务
START TRANSACTION
-- 设置保存点
SAVEPOINT a
-- dml操作
SAVEPOINT b
-- dml操作
ROLLBACK TO b
-- 回退全部事务
ROLLBACK
-- 确认事务变化、结束事务、删除保存点、释放锁
COMMIT

使用commit语句结束事务后,其他连接将可以查看到事务变化后的新数据。(隔离级别)

细节:

1、不开启事务,DML操作是自动提交的,不能回滚。

2、开启事务,没有创建保存点,执行rollback直接回退到事务开始的状态。

3、mysql的事务机制需要InnoDB的存储引擎才可以使用,MyISAM不好使。

隔离级别

事务隔离,保证各个连接在获取数据时的准确性。

1、读未提交:

允许事务读取还没提交的事务变更。

2、读已提交:

允许事务读取已提交的事务变更。

3、可重复读:

允许事务读取其他事务已提交的新插入变更。

4、可串行化:

最高隔离级别,事务串行执行。

MySQL执行SQL语句发现有其他事务在操作同一数据表,则当前事务的SQL语句执行会阻塞等待。

事务执行可能遇到的问题

1、脏读:

一个事务读取到了另一个事务尚未提交的增删改。

2、不可重复读:

一个事务两次查询同一数据,由于另一事务对该行数据提交了删改,得到了不同的结果。

3、幻读:

一个事务两次查询同一数据,由于另一事务对该行数据提交了插入操作,得到了不同的结果。

posted @ 2023-09-15 22:24  上瘾了  阅读(40)  评论(0)    收藏  举报