Skip to content

Commit dbeec2b

Browse files
committed
Update Java Note
1 parent 8345ccc commit dbeec2b

File tree

2 files changed

+151
-196
lines changed

2 files changed

+151
-196
lines changed

DB.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3999,6 +3999,8 @@ InnoDB 存储引擎中有页(Page)的概念,页是 MySQL 磁盘管理的
39993999
* InnoDB 引擎将若干个地址连接磁盘块,以此来达到页的大小 16KB
40004000
* 在查询数据时如果一个页中的每条数据都能有助于定位数据记录的位置,这将会减少磁盘 I/O 次数,提高查询效率
40014001

4002+
超过 16KB 的一条记录,主键索引页只会存储部分数据和指向**溢出页**的指针,剩余数据都会分散存储在溢出页中
4003+
40024004
数据页物理结构,从上到下:
40034005

40044006
* File Header:上一页和下一页的指针、该页的类型(索引页、数据页、日志页等)、**校验和**、LSN(最近一次修改当前页面时的系统 lsn 值,事务持久性部分详解)等信息
@@ -4147,9 +4149,11 @@ B+ 树为了保持索引的有序性,在插入新值的时候需要做相应
41474149

41484150
一般选用数据小的字段做索引,字段长度越小,普通索引的叶子节点就越小,普通索引占用的空间也就越小
41494151

4150-
自增主键的插入数据模式,可以让主键索引尽量地保持递增顺序插入,不涉及到挪动其他记录,**避免了页分裂**
4152+
自增主键的插入数据模式,可以让主键索引尽量地保持递增顺序插入,不涉及到挪动其他记录,**避免了页分裂**,页分裂的目的就是保证后一个数据页中的所有行主键值比前一个数据页中主键值大
4153+
41514154

41524155

4156+
参考文章:https://developer.aliyun.com/article/919861
41534157

41544158

41554159

@@ -5597,7 +5601,7 @@ MySQL 4.1 版本之后,开始支持 SQL 的子查询
55975601
* 优化方式二:方案适用于主键自增的表,可以把 LIMIT 查询转换成某个位置的查询
55985602

55995603
```mysql
5600-
EXPLAIN SELECT * FROM tb_user_1 WHERE id > 200000 LIMIT 10; -- 写法 1
5604+
EXPLAIN SELECT * FROM tb_user_1 WHERE id > 200000 LIMIT 10; -- 写法 1
56015605
EXPLAIN SELECT * FROM tb_user_1 WHERE id BETWEEN 200000 and 200010; -- 写法 2
56025606
```
56035607

@@ -10507,7 +10511,7 @@ clientsCron 函数对一定数量的客户端进行以下两个检查:
1050710511
* 如果客户端与服务器之间的连接巳经超时(很长一段时间客户端和服务器都没有互动),那么程序释放这个客户端
1050810512
* 如果客户端在上一次执行命令请求之后,输入缓冲区的大小超过了一定的长度,那么程序会释放客户端当前的输入缓冲区,并重新创建一个默认大小的输入缓冲区,从而防止客户端的输入缓冲区耗费了过多的内存
1050910513

10510-
databasesCron 函数会对服务器中的一部分数据库进行检查,删除其中的过期键,并在有需要时 对字典进行收缩操作
10514+
databasesCron 函数会对服务器中的一部分数据库进行检查,删除其中的过期键,并在有需要时对字典进行收缩操作
1051110515

1051210516

1051310517

@@ -10570,7 +10574,7 @@ serverCron 函数会检查 BGSAVE 或者 BGREWRITEAOF 命令是否正在执行
1057010574

1057110575

1057210576

10573-
##### cronloops
10577+
##### 执行次数
1057410578

1057510579
服务器状态的 cronloops 属性记录了 serverCron 函数执行的次数
1057610580

@@ -15033,10 +15037,7 @@ def CLUSTER_KEYSLOT(key):
1503315037
reply_client(slot);
1503415038
```
1503515039

15036-
判断槽是否由当前节点负责处理:
15037-
15038-
* 如果 clusterState.slots[i] 等于 clusterState.myself,那么说明槽 i 由当前节点负责,节点可以执行客户端发送的命令
15039-
* 如果 clusterState.slots[i] 不等于 clusterState.myself,那么说明槽 i 并非由当前节点负责,节点会根据 clusterState.slots[i] 指向的clusterNode 结构所记录的节点 IP 和端口号,向客户端返回 MOVED 错误
15040+
判断槽是否由当前节点负责处理:如果 clusterState.slots[i] 不等于 clusterState.myself,那么说明槽 i 并非由当前节点负责,节点会根据 clusterState.slots[i] 指向的 clusterNode 结构所记录的节点 IP 和端口号,向客户端返回 MOVED 错误
1504015041

1504115042

1504215043

0 commit comments

Comments
 (0)