Skip to content

Commit 70a943b

Browse files
digoal zhoudigoal zhou
authored andcommitted
new doc
1 parent cf41263 commit 70a943b

File tree

4 files changed

+65
-0
lines changed

4 files changed

+65
-0
lines changed

202201/20220104_03.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
## 一起学PolarDB - 第10期 - 为什么数据库重启或崩溃恢复后性能可能瞬间很差?
2+
3+
### 作者
4+
digoal
5+
6+
### 日期
7+
2021-01-04
8+
9+
### 标签
10+
PostgreSQL , PolarDB
11+
12+
----
13+
14+
## 背景
15+
懂PostgreSQL, 学PolarDB不难, 就好像有九阳神功护体, 可以快速融会贯通.
16+
对于DBA只要学会PolarDB精髓即可.
17+
对于开发者来说不需要学习, 使用PolarDB和PostgreSQL一样.
18+
19+
#### 为什么数据库重启或崩溃恢复后性能可能瞬间很差?
20+
数据库实例崩溃、重启后性能可能变得很差, 就像烧油的汽车刚刚发动时还没有润滑一样. 原因是崩溃后在数据库shared buffer内的热数据没了, 大概率访问数据需要访问存储, 存储的性能和内存相差巨大, 因此性能瞬间变差.
21+
22+
社区版本:
23+
为了解决启动时没有热数据的问题, PG社区版本引入了预热插件pg_prewarm.
24+
- pg_prewarm (版本11开始也支持自动dump pageid, 自动预热) + pg_buffercache
25+
- https://www.postgresql.org/docs/14/pgbuffercache.html
26+
- https://www.postgresql.org/docs/14/pgprewarm.html
27+
28+
注意:
29+
社区版本存在double cache现象, 如果不重启服务器, 或者未清理page cache, 重启数据库实例后性能影响可能不大, 因为很多数据可能存在于page cache内.
30+
31+
PolarDB:
32+
- 不需要预热, PolarDB 支持 Persistent BufferPool的功能 (目前只有RW节点和standby实例有Persistent BufferPool), 实例重启、崩溃时, 由于Persistent BufferPool的存在, 性能基本没有抖动.
33+
![pic](20220104_03_pic_001.png)
34+
35+
36+
本期问题1:
37+
为什么数据库重启或崩溃恢复后性能可能瞬间很差?
38+
- a. 客户端需要大量重建与数据库的连接
39+
- b. 数据库崩溃恢复或者重启时, shared buffer中没有数据, 所有数据都需要从存储层访问, 存储的性能和内存相差巨大, 因此性能瞬间变差.
40+
- c. 由于数据库重启或崩溃恢复, 操作系统的page cache中的热数据消失了
41+
- d. 数据库刚启动时需要处理复杂的启动任务, 所以刚启动时性能差
42+
43+
答案:
44+
- b
45+
46+
解释:
47+
- 参考本文内容
48+
49+
50+
#### [期望 PostgreSQL 增加什么功能?](https://github.com/digoal/blog/issues/76 "269ac3d1c492e938c0191101c7238216")
51+
52+
53+
#### [PolarDB for PostgreSQL云原生分布式开源数据库](https://github.com/ApsaraDB/PolarDB-for-PostgreSQL "57258f76c37864c6e6d23383d05714ea")
54+
55+
56+
#### [PostgreSQL 解决方案集合](https://yq.aliyun.com/topic/118 "40cff096e9ed7122c512b35d8561d9c8")
57+
58+
59+
#### [德哥 / digoal's github - 公益是一辈子的事.](https://github.com/digoal/blog/blob/master/README.md "22709685feb7cab07d30f30387f0a9ae")
60+
61+
62+
![digoal's wechat](../pic/digoal_weixin.jpg "f7ad92eeba24523fd47a6e1a0e691b59")
63+

202201/20220104_03_pic_001.png

86.1 KB
Loading

202201/readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
### 文章列表
44
----
5+
##### 20220104_03.md [《一起学PolarDB - 第10期 - 为什么数据库重启或崩溃恢复后性能可能瞬间很差?》](20220104_03.md)
56
##### 20220104_02.md [《一起学PolarDB - 第9期 - 为什么经常使用临时表时建议使用全局临时表?》](20220104_02.md)
67
##### 20220104_01.md [《一起学PolarDB - 第8期 - 为什么存储RT指标对实例性能影响很大?》](20220104_01.md)
78
##### 20220102_01.md [《德说-第84期, 挨家挨户》](20220102_01.md)

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ digoal's|PostgreSQL|文章|归类
8787

8888
### 所有文档如下
8989
----
90+
##### 202201/20220104_03.md [《一起学PolarDB - 第10期 - 为什么数据库重启或崩溃恢复后性能可能瞬间很差?》](202201/20220104_03.md)
9091
##### 202201/20220104_02.md [《一起学PolarDB - 第9期 - 为什么经常使用临时表时建议使用全局临时表?》](202201/20220104_02.md)
9192
##### 202201/20220104_01.md [《一起学PolarDB - 第8期 - 为什么存储RT指标对实例性能影响很大?》](202201/20220104_01.md)
9293
##### 202201/20220102_01.md [《德说-第84期, 挨家挨户》](202201/20220102_01.md)

0 commit comments

Comments
 (0)