事务

事务

  • *事务的简介

事务是一组操作的集合,这是一个不可分割的工作单元。事务将向整个系统提交或取消操作请求。这些操作只能同时成功和失败。

[En]

A transaction is a collection of a set of operations, which is an indivisible unit of work. Transactions will submit or cancel operation requests to the system as a whole. These operations can only succeed and fail at the same time.

事务的操作

  • 查看、设置事务提交方式
-- 查看事务的提交方式(若为"1"则是自动提交,若为"0"则是手动提交)
select @@autocommit;
-- 设置事务为手动提交
set @@autocommit = 0;
  • 提交事务
commit;
  • 回滚事务
rollback;
  • 开启事务
start transaction;
begin;

事务的四大特性(ACID)

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

并发事务问题

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

事务的隔离级别

隔离级别 脏读 不可重复读 幻读 Read uncommitted Y Y Y Read committed N Y Y Repeatable Read N N Y Serializable N N N

(注意:Repeatable Read 为MySQL的默认隔离级别;)

  • 查看事务隔离级别
select @@transaction_isolation;
  • 设置事务隔离级别
set session\global transaction isolation level 隔离级别;

*(注意:session为针对当前客户端窗口有效;global为针对所有客户端的窗口有效;)

Original: https://www.cnblogs.com/TeaTracing/p/16498053.html
Author: TeaTracing
Title: 事务

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505188/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球