auto commit
This commit is contained in:
parent
9e4c055c17
commit
aa407d4e11
|
@ -36,11 +36,11 @@ InnoDB 是 MySQL 默认的事务型存储引擎,只有在需要 InnoDB 不支
|
||||||
|
|
||||||
内部做了很多优化,包括从磁盘读取数据时采用的可预测性读、能够自动在内存中创建哈希索引以加速读操作的自适应哈希索引、能够加速插入操作的插入缓冲区等。
|
内部做了很多优化,包括从磁盘读取数据时采用的可预测性读、能够自动在内存中创建哈希索引以加速读操作的自适应哈希索引、能够加速插入操作的插入缓冲区等。
|
||||||
|
|
||||||
通过一些机制和工具支持真正的热备份,其它存储引擎不支持热备份,要获取一致性视图需要停止对所有表的写入,而在读写混合场景中,停止写入可能也意味着停止读取。
|
通过一些机制和工具支持真正的热备份。其它存储引擎不支持热备份,要获取一致性视图需要停止对所有表的写入,而在读写混合场景中,停止写入可能也意味着停止读取。
|
||||||
|
|
||||||
## MyISAM
|
## MyISAM
|
||||||
|
|
||||||
MyISAM 提供了大量的特性,包括全文索引、压缩表、空间数据索引等。应该注意的是,MySQL 5.6.4 也添加了对 InnoDB 引擎的全文索引支持。
|
MyISAM 提供了大量的特性,包括全文索引、压缩表、空间数据索引等。应该注意的是,MySQL 5.6.4 也添加了对 InnoDB 存储引擎的全文索引支持。
|
||||||
|
|
||||||
不支持事务。
|
不支持事务。
|
||||||
|
|
||||||
|
@ -140,7 +140,12 @@ B+Tree 索引是大多数 MySQL 存储引擎的默认索引类型。
|
||||||
|
|
||||||
InnoDB 引擎有一个特殊的功能叫“自适应哈希索引”,当某个索引值被使用的非常频繁时,会在 B+Tree 索引之上再创建一个哈希索引,这样就让 B+Tree 索引具有哈希索引的一些优点,比如快速的哈希查找。
|
InnoDB 引擎有一个特殊的功能叫“自适应哈希索引”,当某个索引值被使用的非常频繁时,会在 B+Tree 索引之上再创建一个哈希索引,这样就让 B+Tree 索引具有哈希索引的一些优点,比如快速的哈希查找。
|
||||||
|
|
||||||
限制:哈希索引只包含哈希值和行指针,而不存储字段值,所以不能使用索引中的值来避免读取行。不过,访问内存中的行的速度很快,所以大部分情况下这一点对性能影响并不明显;无法用于分组与排序;只支持精确查找,无法用于部分查找和范围查找;如果哈希冲突很多,查找速度会变得很慢。
|
限制:
|
||||||
|
|
||||||
|
- 哈希索引只包含哈希值和行指针,而不存储字段值,所以不能使用索引中的值来避免读取行。不过,访问内存中的行的速度很快,所以大部分情况下这一点对性能影响并不明显;
|
||||||
|
- 无法用于分组与排序;
|
||||||
|
- 只支持精确查找,无法用于部分查找和范围查找;
|
||||||
|
- 如果哈希冲突很多,查找速度会变得很慢。
|
||||||
|
|
||||||
### 3. 空间数据索引(R-Tree)
|
### 3. 空间数据索引(R-Tree)
|
||||||
|
|
||||||
|
@ -162,7 +167,7 @@ MyISAM 存储引擎支持全文索引,用于查找文本中的关键词,而
|
||||||
|
|
||||||
- 帮助服务器避免进行排序和创建临时表(B+Tree 索引是有序的,可以用来做 ORDER BY 和 GROUP BY 操作);
|
- 帮助服务器避免进行排序和创建临时表(B+Tree 索引是有序的,可以用来做 ORDER BY 和 GROUP BY 操作);
|
||||||
|
|
||||||
- 将随机 I/O 变为顺序 I/O(B+Tree 索引是有序的,也就将相关的列值都存储在一起)。
|
- 将随机 I/O 变为顺序 I/O(B+Tree 索引是有序的,也就将相邻的列值都存储在一起)。
|
||||||
|
|
||||||
## 索引优化
|
## 索引优化
|
||||||
|
|
||||||
|
|
|
@ -235,7 +235,7 @@ lock-x(A)...lock-s(B)...lock-s(C)...unlock(A)...unlock(C)...unlock(B)
|
||||||
但不是必要条件,例如以下操作不满足两段锁协议,但是它还是可串行化调度。
|
但不是必要条件,例如以下操作不满足两段锁协议,但是它还是可串行化调度。
|
||||||
|
|
||||||
```html
|
```html
|
||||||
lock-x(A)...unlock(A)...lock-s(B)...unlock(B)...lock-s(C)...unlock(C)...
|
lock-x(A)...unlock(A)...lock-s(B)...unlock(B)...lock-s(C)...unlock(C)
|
||||||
```
|
```
|
||||||
|
|
||||||
# 四、隔离级别
|
# 四、隔离级别
|
||||||
|
@ -318,7 +318,7 @@ InnoDB 的 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回
|
||||||
读取快照中的数据,可以减少加锁所带来的开销。
|
读取快照中的数据,可以减少加锁所带来的开销。
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select * from table ....;
|
select * from table ...;
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. 当前读
|
### 2. 当前读
|
||||||
|
@ -428,15 +428,13 @@ SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE;
|
||||||
|
|
||||||
以上学生课程关系中,{Sno, Cname} 为键码,有如下函数依赖:
|
以上学生课程关系中,{Sno, Cname} 为键码,有如下函数依赖:
|
||||||
|
|
||||||
- Sno, Cname -> Sname, Sdept, Mname
|
|
||||||
- Sno -> Sname, Sdept
|
- Sno -> Sname, Sdept
|
||||||
- Sdept -> Mname
|
- Sdept -> Mname
|
||||||
- Sno -> Mname
|
|
||||||
- Sno, Cname-> Grade
|
- Sno, Cname-> Grade
|
||||||
|
|
||||||
Grade 完全函数依赖于键码,它没有任何冗余数据,每个学生的每门课都有特定的成绩。
|
Grade 完全函数依赖于键码,它没有任何冗余数据,每个学生的每门课都有特定的成绩。
|
||||||
|
|
||||||
Sname, Sdept 和 Mname 都函数依赖于 Sno,而部分依赖于键码。当一个学生选修了多门课时,这些数据就会出现多次,造成大量冗余数据。
|
Sname, Sdept 和 Mname 都部分依赖于键码,当一个学生选修了多门课时,这些数据就会出现多次,造成大量冗余数据。
|
||||||
|
|
||||||
<font size=4> **分解后** </font><br>
|
<font size=4> **分解后** </font><br>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user