From fc06f9132320b26922ffea8770af59f39a346863 Mon Sep 17 00:00:00 2001
From: heibaiying <31504331+heibaiying@users.noreply.github.com>
Date: Tue, 20 Aug 2019 13:28:39 +0800
Subject: [PATCH] =?UTF-8?q?Update=20MySQL=5F=E5=9F=BA=E7=A1=80.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
notes/MySQL_基础.md | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/notes/MySQL_基础.md b/notes/MySQL_基础.md
index 6bbed20..41e0a8a 100644
--- a/notes/MySQL_基础.md
+++ b/notes/MySQL_基础.md
@@ -45,6 +45,7 @@ InnoDB 是 MySQL 5.5 之后默认的存储引擎,它是一种兼具高可靠
+
### 1.2 MyISAM
MyISAM 是 MySQL 5.5 之前默认的存储引擎。创建 MyISAM 表时会创建两个同名的文件:
@@ -119,12 +120,15 @@ mysql> SELECT * FROM total;
**平衡二叉树数据结构**:
+
**红黑树数据结构**:
+
**Btree 数据结构**:
+
**B+ Tree 数据结构**
@@ -281,21 +285,25 @@ InnoDB 存储引擎完全支持 ACID 模型:
一个事务的更新操作被另外一个事务的更新操作锁覆盖,从而导致数据不一致:
+
**2. 脏读**
在不同的事务下,一个事务读取到其他事务未提交的数据:
+
**3. 不可重复读**
在同一个事务的两次读取之间,由于其他事务对数据进行了修改,导致对同一条数据两次读到的结果不一致:
+
**4.幻读**
在同一个事务的两次读取之间,由于其他事务对数据进行了修改,导致第二次读取到第一次不存在数据,或第一次原本存在的数据,第二次却读取不到,就好像之前的读取是 “幻觉” 一样:
+
### 4.4 隔离级别
想要解决以上问题,可以通过设置隔离级别来实现:InnoDB 支持以下四个等级的隔离级别,默认隔离级别为可重复读:
@@ -330,9 +338,9 @@ InnoDB 存储引擎完全支持 ACID 模型:
要求非主键列必须完全依赖于主键列,而不能存在部分依赖。示例如下:
-| mechanism_id (组织机构代码) | employee_id (雇员编号) | ename (雇员名称) | cname (组织机构名称) |
-| ----------------------------- | ------------------------ | ------------------ | ---------------------- |
-| 28193182 | 10001 | heibaiying | XXXX公司 |
+| mechanism_id (组织机构代码) | employee_id (雇员编号) | ename (雇员名称) | mname (机构名称) |
+| ----------------------------- | ------------------------ | ------------------ | ----------------|
+| 28193182 | 10001 | heibaiying | XXXX公司 |
以上是一张全市在职人员统计表,主键为:机构编码 + 雇员编号,这里的雇员名称完全依赖于此联合主键,但机构名称就只依赖于机构代码,这就出现了部分依赖,违背了第二范式。此时最好的解决方式就是建立一张组织机构与组织名称的字典表。