MySQL最佳入门 - MySQL的并发控制

目录

 

MySQL事务处理

什么是事务

事务的四大特性

原子性(Atomicity)

一致性(Consistent)

隔离性(Isolation)

持久性(Durable)

事务举例

多事务执行方式

串行执行

特点

交叉并发执行

特点

同时并发执行

特点

并发执行导致的问题

什么是数据不一致

丢失修改(lost update)

不可重复读(non-repeatable read)

读“脏数据”(dirty read)

并发控制


MySQL事务处理

什么是事务

事务是由一组SQL语句组成的逻辑处理单元。

事务的四大特性

ACID

原子性(Atomicity)

事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全都不执行。

一致性(Consistent)

在事务开始和完成时,数据都必须保持一致状态。

隔离性(Isolation)

数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行,这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。

持久性(Durable)

事务完成之后,他对于数据的修改是永久性的,即使出现系统故障也能够保持。

事务举例

多事务执行方式

多请求多操作时应该如何处理:

串行执行

最简单的处理方式,代表同一时间只有一个事务执行,如果有四件事,需要做一个队列,谁先进队列处理谁,一个一个来。

比如,开了一个窗口的银行,然后取票排队处理业务。

特点

  • 同一时间只有一个事务执行
  • 效率低,无法充分利用资源

交叉并发执行

比如:a客户填表,b客户可以处理业务。b客户处理完,b去填表,a处理业务。

利用任务等待时间,交叉并发执行。

特点

  • 多事务交叉运行
  • 单处理器的并发方式

同时并发执行

比如:银行开多个窗口,每个窗口都能处理客户的业务,效率最高。

就像计算机多核,就可以处理多个运算。

特点

  • 多处理器系统中使用
  • 每个处理器处理一个事务

并发执行导致的问题

  • 并发势必面临“同读同写”问题;
  • “同读同写”导致破坏事务隔离性和数据不一致;

什么是数据不一致

丢失修改(lost update)

丢失修改是指事务1与事务2从数据库中读入同一数据并修改。事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失;

不可重复读(non-repeatable read)

不可重复读是指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次的读取结果。

读“脏数据”(dirty read)

读“脏”数据是指事务1修改某一数据并写回,然后事务2读取该数据。事务1由于某种原因被撤销,数据恢复原值。导致事务2读取的数据为错误数据,也就是“脏数据”。

并发控制

  • 对并发操作进行正确正确调度;
  • 保证事务的隔离性;
  • 保证数据的一致性;
发布了177 篇原创文章 · 获赞 130 · 访问量 13万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章