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公司 | 以上是一张全市在职人员统计表,主键为:机构编码 + 雇员编号,这里的雇员名称完全依赖于此联合主键,但机构名称就只依赖于机构代码,这就出现了部分依赖,违背了第二范式。此时最好的解决方式就是建立一张组织机构与组织名称的字典表。