惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
博客园 - 聂微东
Application and Cybersecurity Blog
Application and Cybersecurity Blog
MyScale Blog
MyScale Blog
罗磊的独立博客
H
Help Net Security
L
LangChain Blog
T
Threat Research - Cisco Blogs
量子位
S
Securelist
Last Week in AI
Last Week in AI
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
P
Privacy International News Feed
The Hacker News
The Hacker News
Vercel News
Vercel News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Blog of Author Tim Ferriss
T
Threatpost
Security Latest
Security Latest
P
Palo Alto Networks Blog
Microsoft Security Blog
Microsoft Security Blog
NISL@THU
NISL@THU
F
Full Disclosure
WordPress大学
WordPress大学
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Heimdal Security Blog
J
Java Code Geeks
Recorded Future
Recorded Future
Hugging Face - Blog
Hugging Face - Blog
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
阮一峰的网络日志
阮一峰的网络日志
U
Unit 42
B
Blog RSS Feed
月光博客
月光博客
C
Cisco Blogs
V
Visual Studio Blog
D
DataBreaches.Net
H
Hacker News: Front Page
博客园 - 叶小钗
N
News and Events Feed by Topic
爱范儿
爱范儿
A
Arctic Wolf

博客园 - raysbo

认知决定上限 多线程 LINQ Free download MVP 架构 - 成功法宝 书籍汇总 架构 - 如何成为优秀的架构师 MVVM - 基础介绍 知识点 - 网址收集 优化 - 优化网站设计 MVC - PureMVC SAP - 学习网站汇总 HTML5 - 学习网站收集 HTML5 - 新增标签 HTML5 - 概要认识 SQLSERVER - Index ORACLE - 简介及安装 IoC容器 - Spring.NET
DB - 并发控制
raysbo · 2013-05-12 · via 博客园 - raysbo

1. 为什么要并发控制?
数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。

2. 并发操作可能会产生哪几类数据不一致?

  • 丢失修改
    两个事务 Tl 和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了) Tl 提交的结果,导致 Tl 的修改被丢失。 
  • 不可重复读
    事务 Tl 读取数据后,事务T2执行更新操作,使 Tl 无法再现前一次读取结果。
  • 读“脏”数据
    事务 Tl 修改某一数据,并将其写回磁盘,事务T2读取同一数据后, Tl 由于某种原因被撤销,这时 Tl 已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。

3. 解决并发控制的


  • 封锁就是事务 T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务 T 就对该数据对象有了一定的控制,在事务 T 释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。基本的封锁类型有两种:排它锁( Exclusive Locks ,简称 x 锁)和共享锁 ( Share Locks,简称 S 锁)。
  • 时间戳排序
    通过事先在每对事务之间选择一个顺序来保证可串行性。系统中的每个事务对应一个唯一的固定的时间戳。事务的时间戳决定了事务的可串行化顺序。这样,如果事务Ti的时间戳小于事务Tj时间戳,则该机制保证产生的调度等价于事务Ti出现在事务Tj之前的一个串行调度。该机制通过回滚违反该次序的事务来保证这一点。
  • 有效性检查
    一个适当的并发控制机制。系统中的每个事务对应一个唯一的固定的时间戳,串行性次序是由事务的时间戳决定的。在该机制中,事务不会被延迟。不过,事务要完成必须通过有效性检查,如果事务未通过有效性检查,则回滚到初始状态。
  • 多版本并发
    基于每个事务写数据项时为该数据项创建一个新版本。读操作发出时,系统选择其中的一个版本进行读取。利用时间戳,并发控制机制保证确保可串行性的方式选取要读取的版本。