auto commit

This commit is contained in:
CyC2018 2018-12-30 22:20:35 +08:00
parent 1a1ba6c37e
commit 7b95416e65
7 changed files with 11 additions and 9 deletions

View File

@ -317,11 +317,11 @@ int dictRehash(dict *d, int n) {
跳跃表是基于多指针有序链表实现的,可以看成多个有序链表。
<div align="center"> <img src="pics/beba612e-dc5b-4fc2-869d-0b23408ac90a.png"/> </div><br>
<div align="center"> <img src="pics/beba612e-dc5b-4fc2-869d-0b23408ac90a.png" width="600px"/> </div><br>
在查找时,从上层指针开始查找,找到对应的区间之后再到下一层去查找。下图演示了查找 22 的过程。
<div align="center"> <img src="pics/0ea37ee2-c224-4c79-b895-e131c6805c40.png"/> </div><br>
<div align="center"> <img src="pics/0ea37ee2-c224-4c79-b895-e131c6805c40.png" width="600px"/> </div><br>
与红黑树等平衡树相比,跳跃表具有以下优点:
@ -472,7 +472,7 @@ Redis 服务器是一个事件驱动程序。
Redis 基于 Reactor 模式开发了自己的网络事件处理器,使用 I/O 多路复用程序来同时监听多个套接字,并将到达的事件传送给文件事件分派器,分派器会根据套接字产生的事件类型调用相应的事件处理器。
<div align="center"> <img src="pics/9ea86eb5-000a-4281-b948-7b567bd6f1d8.png"/> </div><br>
<div align="center"> <img src="pics/9ea86eb5-000a-4281-b948-7b567bd6f1d8.png" width=""/> </div><br>
## 时间事件
@ -525,7 +525,7 @@ def main():
从事件处理的角度来看,服务器运行流程如下:
<div align="center"> <img src="pics/c0a9fa91-da2e-4892-8c9f-80206a6f7047.png" width="400"/> </div><br>
<div align="center"> <img src="pics/c0a9fa91-da2e-4892-8c9f-80206a6f7047.png" width="350"/> </div><br>
# 十一、复制

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -47,7 +47,7 @@
事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。
<div align="center"> <img src="pics/185b9c49-4c13-4241-a848-fbff85c03a64.png" width="400"/> </div><br>
<div align="center"> <img src="pics/bae98438-7db6-41a6-893e-8813248f2f92.jpg" width="400"/> </div><br>
## ACID
@ -94,25 +94,27 @@ MySQL 默认采用自动提交模式。也就是说,如果不显式使用`STAR
T<sub>1</sub> 和 T<sub>2</sub> 两个事务都对一个数据进行修改T<sub>1</sub> 先修改T<sub>2</sub> 随后修改T<sub>2</sub> 的修改覆盖了 T<sub>1</sub> 的修改。
<div align="center"> <img src="pics/88ff46b3-028a-4dbb-a572-1f062b8b96d3.png" width="350"/> </div><br>
<div align="center"> <img src="pics/d5dfeb74-a27a-43b8-9121-191d3cb75198.png" width="350"/> </div><br>
## 读脏数据
T<sub>1</sub> 修改一个数据T<sub>2</sub> 随后读取这个数据。如果 T<sub>1</sub> 撤销了这次修改,那么 T<sub>2</sub> 读取的数据是脏数据。
<div align="center"> <img src="pics/dd782132-d830-4c55-9884-cfac0a541b8e.png" width="400"/> </div><br>
<div align="center"> <img src="pics/16eea7d2-f5f5-4180-93be-dba7d4e48f5d.png" width="400"/> </div><br>
## 不可重复读
T<sub>2</sub> 读取一个数据T<sub>1</sub> 对该数据做了修改。如果 T<sub>2</sub> 再次读取这个数据,此时读取的结果和第一次读取的结果不同。
<div align="center"> <img src="pics/c8d18ca9-0b09-441a-9a0c-fb063630d708.png" width="350"/> </div><br>
<div align="center"> <img src="pics/036c0e07-0725-4b3c-a684-ab3b16ca7b86.png" width="400"/> </div><br>
## 幻影读
T<sub>1</sub> 读取某个范围的数据T<sub>2</sub> 在这个范围内插入新的数据T<sub>1</sub> 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。
<div align="center"> <img src="pics/72fe492e-f1cb-4cfc-92f8-412fb3ae6fec.png" width="350"/> </div><br>
<div align="center"> <img src="pics/2c437953-08b1-47b9-a780-7dfdc90a3b6f.png" width="400"/> </div><br>
----