From 1e6dad5d07d9535c723426a4218128872e1c2409 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 7 Dec 2019 21:19:19 +0800 Subject: [PATCH] auto commit --- docs/notes/数据库系统原理.md | 6 +++--- notes/pics/image-20191207211851299.png | Bin 0 -> 47217 bytes notes/数据库系统原理.md | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 notes/pics/image-20191207211851299.png diff --git a/docs/notes/数据库系统原理.md b/docs/notes/数据库系统原理.md index e2b89c75..bd2fe0f6 100644 --- a/docs/notes/数据库系统原理.md +++ b/docs/notes/数据库系统原理.md @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -116,7 +116,7 @@ T1 读取某个范围的数据,T2 在这个范围内插 ---- -产生并发不一致性问题主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作需要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。 +产生并发不一致性问题的主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作需要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。 # 三、封锁 @@ -135,7 +135,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 ### 1. 读写锁 -- 排它锁(Exclusive),简写为 X 锁,又称写锁。 +- 互斥锁(Exclusive),简写为 X 锁,又称写锁。 - 共享锁(Shared),简写为 S 锁,又称读锁。 有以下两个规定: diff --git a/notes/pics/image-20191207211851299.png b/notes/pics/image-20191207211851299.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a2346f57cdaadb6886fce42c972759b9407ead GIT binary patch literal 47217 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 literal 0 HcmV?d00001 diff --git a/notes/数据库系统原理.md b/notes/数据库系统原理.md index e2b89c75..bd2fe0f6 100644 --- a/notes/数据库系统原理.md +++ b/notes/数据库系统原理.md @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -116,7 +116,7 @@ T1 读取某个范围的数据,T2 在这个范围内插 ---- -产生并发不一致性问题主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作需要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。 +产生并发不一致性问题的主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作需要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。 # 三、封锁 @@ -135,7 +135,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 ### 1. 读写锁 -- 排它锁(Exclusive),简写为 X 锁,又称写锁。 +- 互斥锁(Exclusive),简写为 X 锁,又称写锁。 - 共享锁(Shared),简写为 S 锁,又称读锁。 有以下两个规定: