Skip to content

Commit

Permalink
Site updated: 2024-10-29 16:57:05
Browse files Browse the repository at this point in the history
  • Loading branch information
ss committed Oct 29, 2024
1 parent 8c416ff commit ddb80ee
Show file tree
Hide file tree
Showing 13 changed files with 155 additions and 40 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
119 changes: 117 additions & 2 deletions 2024/软考架构——数据库的控制功能/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,23 @@



<script type="application/ld+json">{"@context":"http://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"一瓢清浅","sameAs":["#about","https://github.com/jiliguluss"],"image":"photo.jpg"},"articleBody":"","dateCreated":"2024-10-28T16:27:57+08:00","dateModified":"2024-10-28T16:28:56+08:00","datePublished":"2024-10-28T16:27:57+08:00","description":" 数据库的并发控制、性能优化、以及备份和恢复 ","headline":"软考架构——数据库的控制功能","image":[],"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/"},"publisher":{"@type":"Organization","name":"一瓢清浅","sameAs":["#about","https://github.com/jiliguluss"],"image":"photo.jpg","logo":{"@type":"ImageObject","url":"photo.jpg"}},"url":"https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/","keywords":"软件工程, 数据库设计, 数据库范式"}</script>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"BlogPosting","author":{"@type":"Person","name":"一瓢清浅","sameAs":["#about","https://github.com/jiliguluss"],"image":"photo.jpg"},"articleBody":"\n\n数据库的控制功能主要指对数据库中数据的管理和维护,确保数据的安全性、完整性和一致性。数据库控制功能主要包括:并发控制、性能优化、完整性约束、以及备份与恢复。\n一、并发控制1. 事务DBMS 运行的基本工作单位是事务,事务是用户定义的一个数据库读写操作序列,这些操作序列要么全做,要么全不做,是一个不可分割的工作单位。\n事务具有以下四个基本特性,通常被称为ACID 特性:\n\n原子性(Atomicity):事务中的所有操作是一个不可分割的整体,要么全部完成,要么全部不完成,不能部分地完成。一旦某一步执行失败,就会全部回滚到初始状态。\n一致性(Consistency):事务必须使数据库从一个一致性状态转换到另一个一致性状态。这意味着事务执行过程中和执行结束后,数据库中的数据必须满足所有预定义的规则和约束。\n隔离性(Isolation):一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的事务之间不会相互影响。多个事务并发运行,但看上去像串行调度执行一样。\n持久性(Durability):一旦事务被提交,它对数据库的修改就是永久性的,即使系统发生故障也不会丢失。\n\n\n\n一致性是事务 ACID 四大特性中最重要的属性,而 原子性、隔离性和持久性,都是作为保障一致性的手段。\n2. 数据不一致 如果数据不一致,那么在并发“读 - 写”或并发“写 - 写”的场景,容易出现以下问题:\n(1) 修改丢失T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。\n\n\n\nT1\nT2\n\n\n\n读 A&#x3D;10\n\n\n\n\n读 A&#x3D;10\n\n\nA&#x3D;A-5,写回\n\n\n\n\nA&#x3D;A-8,写回\n\n\nT1 对 A 的修改被 T2 覆盖,T1 的修改不起作用。\n(2) 脏读T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。\n\n\n\nT1\nT2\n\n\n\n读 A&#x3D;20\n\n\n\nA&#x3D;A+50,写回\n\n\n\n\n读 A&#x3D;70\n\n\nrollback\n\n\n\nA&#x3D;20,写回\n\n\n\nT1 对 A 进行修改,但之后回滚撤销,T2 读取的数据与数据库中不一致,是错误的数据(脏数据)。\n(3) 不可重复读T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。\n\n\n\nT1\nT2\n\n\n\n读 A&#x3D;20\n\n\n\n读 B&#x3D;30\n\n\n\n计算 A+B&#x3D;50\n\n\n\n\n读 A&#x3D;20\n\n\n\nA&#x3D;A+50,写回\n\n\n读 A&#x3D;70\n\n\n\n读 B&#x3D;30\n\n\n\n计算 A+B&#x3D;100\n\n\n\nT1 读取数据并进行计算,T2 更新了数据,T1 再次读取数据,然而计算结果不一致。\n(4) 幻读T1 读取某个范围的数据,T2 在这个范围内插入或删除数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。","dateCreated":"2024-10-28T16:27:57+08:00","dateModified":"2024-10-29T16:56:26+08:00","datePublished":"2024-10-28T16:27:57+08:00","description":"数据库的并发控制、性能优化、以及备份和恢复","headline":"软考架构——数据库的控制功能","image":[],"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/"},"publisher":{"@type":"Organization","name":"一瓢清浅","sameAs":["#about","https://github.com/jiliguluss"],"image":"photo.jpg","logo":{"@type":"ImageObject","url":"photo.jpg"}},"url":"https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/","keywords":"软件工程, 数据库设计, 数据库范式"}</script>
<meta name="description" content="数据库的并发控制、性能优化、以及备份和恢复">
<meta property="og:type" content="blog">
<meta property="og:title" content="软考架构——数据库的控制功能">
<meta property="og:url" content="https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/index.html">
<meta property="og:site_name" content="千里之行,始于足下">
<meta property="og:description" content="数据库的并发控制、性能优化、以及备份和恢复">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/ACID%E7%89%B9%E6%80%A7.png">
<meta property="article:published_time" content="2024-10-28T08:27:57.000Z">
<meta property="article:modified_time" content="2024-10-28T08:28:56.481Z">
<meta property="article:modified_time" content="2024-10-29T08:56:26.024Z">
<meta property="article:author" content="一瓢清浅">
<meta property="article:tag" content="软件工程">
<meta property="article:tag" content="数据库设计">
<meta property="article:tag" content="数据库范式">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/ACID%E7%89%B9%E6%80%A7.png">



Expand Down Expand Up @@ -249,6 +251,119 @@ <h1 class="post-title">
<div class="post-content markdown">
<div class="main-content-wrap">
<!--excerpt-->

<p>数据库的控制功能主要指对数据库中数据的管理和维护,确保数据的安全性、完整性和一致性。数据库控制功能主要包括:并发控制、性能优化、完整性约束、以及备份与恢复。</p>
<h2 id="一、并发控制"><a href="# 一、并发控制" class="headerlink" title="一、并发控制"></a>一、并发控制</h2><h3 id="1- 事务"><a href="#1- 事务" class="headerlink" title="1. 事务"></a>1. 事务</h3><p>DBMS 运行的基本工作单位是事务,事务是用户定义的一个数据库读写操作序列,这些操作序列要么全做,要么全不做,是一个不可分割的工作单位。</p>
<p>事务具有以下四个基本特性,通常被称为<strong>ACID 特性</strong></p>
<ul>
<li><strong>原子性(Atomicity)</strong>:事务中的所有操作是一个不可分割的整体,要么全部完成,要么全部不完成,不能部分地完成。一旦某一步执行失败,就会全部回滚到初始状态。</li>
<li><strong>一致性(Consistency)</strong>:事务必须使数据库从一个一致性状态转换到另一个一致性状态。这意味着事务执行过程中和执行结束后,数据库中的数据必须满足所有预定义的规则和约束。</li>
<li><strong>隔离性(Isolation)</strong>:一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的事务之间不会相互影响。多个事务并发运行,但看上去像串行调度执行一样。</li>
<li><strong>持久性(Durability)</strong>:一旦事务被提交,它对数据库的修改就是永久性的,即使系统发生故障也不会丢失。</li>
</ul>
<img src="/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/ACID%E7%89%B9%E6%80%A7.png" class title="ACID 特性 ">

<p>一致性是事务 ACID 四大特性中最重要的属性,而 <strong> 原子性、隔离性和持久性,都是作为保障一致性的手段</strong></p>
<h3 id="2- 数据不一致"><a href="#2- 数据不一致" class="headerlink" title="2. 数据不一致"></a>2. 数据不一致 </h3><p> 如果数据不一致,那么在并发“读 - 写”或并发“写 - 写”的场景,容易出现以下问题:</p>
<h4 id="1- 修改丢失"><a href="#1- 修改丢失" class="headerlink" title="(1) 修改丢失"></a>(1) 修改丢失</h4><p>T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。</p>
<table>
<thead>
<tr>
<th>T1</th>
<th>T2</th>
</tr>
</thead>
<tbody><tr>
<td>读 A&#x3D;10</td>
<td></td>
</tr>
<tr>
<td></td>
<td>读 A&#x3D;10</td>
</tr>
<tr>
<td>A&#x3D;A-5,写回</td>
<td></td>
</tr>
<tr>
<td></td>
<td>A&#x3D;A-8,写回</td>
</tr>
</tbody></table>
<p>T1 对 A 的修改被 T2 覆盖,T1 的修改不起作用。</p>
<h4 id="2- 脏读"><a href="#2- 脏读" class="headerlink" title="(2) 脏读"></a>(2) 脏读</h4><p>T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。</p>
<table>
<thead>
<tr>
<th>T1</th>
<th>T2</th>
</tr>
</thead>
<tbody><tr>
<td>读 A&#x3D;20</td>
<td></td>
</tr>
<tr>
<td>A&#x3D;A+50,写回</td>
<td></td>
</tr>
<tr>
<td></td>
<td>读 A&#x3D;70</td>
</tr>
<tr>
<td>rollback</td>
<td></td>
</tr>
<tr>
<td>A&#x3D;20,写回</td>
<td></td>
</tr>
</tbody></table>
<p>T1 对 A 进行修改,但之后回滚撤销,T2 读取的数据与数据库中不一致,是错误的数据(脏数据)。</p>
<h4 id="3- 不可重复读"><a href="#3- 不可重复读" class="headerlink" title="(3) 不可重复读"></a>(3) 不可重复读</h4><p>T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。</p>
<table>
<thead>
<tr>
<th>T1</th>
<th>T2</th>
</tr>
</thead>
<tbody><tr>
<td>读 A&#x3D;20</td>
<td></td>
</tr>
<tr>
<td>读 B&#x3D;30</td>
<td></td>
</tr>
<tr>
<td>计算 A+B&#x3D;50</td>
<td></td>
</tr>
<tr>
<td></td>
<td>读 A&#x3D;20</td>
</tr>
<tr>
<td></td>
<td>A&#x3D;A+50,写回</td>
</tr>
<tr>
<td>读 A&#x3D;70</td>
<td></td>
</tr>
<tr>
<td>读 B&#x3D;30</td>
<td></td>
</tr>
<tr>
<td>计算 A+B&#x3D;100</td>
<td></td>
</tr>
</tbody></table>
<p>T1 读取数据并进行计算,T2 更新了数据,T1 再次读取数据,然而计算结果不一致。</p>
<h4 id="4- 幻读"><a href="#4- 幻读" class="headerlink" title="(4) 幻读"></a>(4) 幻读</h4><p>T1 读取某个范围的数据,T2 在这个范围内插入或删除数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。</p>



Expand Down
2 changes: 1 addition & 1 deletion archives/2024/10/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ <h1 class="postShorten-title">
</div>

<div class="postShorten-excerpt">
<p> 数据库的并发控制、性能优化、以及备份和恢复 </p>
<p>数据库的并发控制、性能优化、以及备份和恢复</p>

<a href="/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/" class="postShorten-excerpt_link link" aria-label=": 软考架构——数据库的控制功能">
阅读全文
Expand Down
2 changes: 1 addition & 1 deletion archives/2024/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ <h1 class="postShorten-title">
</div>

<div class="postShorten-excerpt">
<p> 数据库的并发控制、性能优化、以及备份和恢复 </p>
<p>数据库的并发控制、性能优化、以及备份和恢复</p>

<a href="/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/" class="postShorten-excerpt_link link" aria-label=": 软考架构——数据库的控制功能">
阅读全文
Expand Down
2 changes: 1 addition & 1 deletion archives/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ <h1 class="postShorten-title">
</div>

<div class="postShorten-excerpt">
<p> 数据库的并发控制、性能优化、以及备份和恢复 </p>
<p>数据库的并发控制、性能优化、以及备份和恢复</p>

<a href="/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/" class="postShorten-excerpt_link link" aria-label=": 软考架构——数据库的控制功能">
阅读全文
Expand Down
6 changes: 3 additions & 3 deletions baidusitemap.xml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%BB%BA%E6%A8%A1/</loc>
<loc>https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/</loc>
<lastmod>2024-10-29</lastmod>
</url>
<url>
<loc>https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/</loc>
<lastmod>2024-10-28</lastmod>
<loc>https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%BE%E8%AE%A1%E4%B8%8E%E5%BB%BA%E6%A8%A1/</loc>
<lastmod>2024-10-29</lastmod>
</url>
<url>
<loc>https://www.stepbystep.asia/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E7%B3%BB%E7%BB%9F%E5%88%86%E6%9E%90%E4%B8%8E%E8%AE%BE%E8%AE%A1%EF%BC%9A%E7%BB%93%E6%9E%84%E5%8C%96%E4%B8%8E%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/</loc>
Expand Down
2 changes: 1 addition & 1 deletion categories/软考/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ <h1 class="postShorten-title">
</div>

<div class="postShorten-excerpt">
<p> 数据库的并发控制、性能优化、以及备份和恢复 </p>
<p>数据库的并发控制、性能优化、以及备份和恢复</p>

<a href="/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/" class="postShorten-excerpt_link link" aria-label=": 软考架构——数据库的控制功能">
阅读全文
Expand Down
2 changes: 1 addition & 1 deletion categories/软考/系统架构/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ <h1 class="postShorten-title">
</div>

<div class="postShorten-excerpt">
<p> 数据库的并发控制、性能优化、以及备份和恢复 </p>
<p>数据库的并发控制、性能优化、以及备份和恢复</p>

<a href="/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/" class="postShorten-excerpt_link link" aria-label=": 软考架构——数据库的控制功能">
阅读全文
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ <h1 class="postShorten-title">
</div>

<div class="postShorten-excerpt">
<p> 数据库的并发控制、性能优化、以及备份和恢复 </p>
<p>数据库的并发控制、性能优化、以及备份和恢复</p>

<a href="/2024/%E8%BD%AF%E8%80%83%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E6%8E%A7%E5%88%B6%E5%8A%9F%E8%83%BD/" class="postShorten-excerpt_link link" aria-label=": 软考架构——数据库的控制功能">
阅读全文
Expand Down
Loading

0 comments on commit ddb80ee

Please sign in to comment.