View on GitHub

Dmarco-v.github.io

Dmarco_v的技术博客,Java开发相关技术积累、LeetCode刷题笔记

一、事务

事务是指满足ACID特性的一组操作,数据库中常用的基本概念。使用Commit提交一个事务,Rollback进行回滚。

ACID特性:

二、并发一致性问题

问题起因

在并发的情形下,事务隔离性难以保证,因此会出现并发一致性问题。主要有以下几种:

解决方式

产生并发不一致性问题的主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作需要用户自己控制,相当复杂。DBMS提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。

封锁

MySQL中提供了两种封锁粒度:行锁和表锁。锁定的数据量越少,发生争用的概率就越小,系统的并发程度就越高;但同时加锁会增加系统开销,因此选择封锁粒度时,需要权衡并发程度与系统开销。

封锁类型:

两段锁协议:加锁和解锁分成两个阶段进行。事务遵循两段锁协议是保证可串行化调度的充分条件。串行执行的事务互不干扰,不会出现并发一致性问题。

MySQL中的锁:

隔离级别