|
21 | 21 | ### [**行业认知**](post/industry/)
|
22 | 22 | - [认识互联网](post/industry/understand-the-internet.md)
|
23 | 23 | - [互联网之殇](post/industry/obstacle-of-internet.md)
|
24 |
| -- [互联网之冬](post/industry/winter-of-the-internet.md) |
25 | 24 |
|
26 | 25 |
|
27 | 26 | ### **技术文章**
|
|
39 | 38 |
|
40 | 39 | --------------------
|
41 | 40 |
|
42 |
| - |
43 |
| - |
44 | 41 | ## Application / 应用开发
|
45 | 42 |
|
46 | 43 | ### **应用案例**
|
47 | 44 |
|
48 | 45 | - [KNN问题极致优化:以找出最近餐馆为例](app/knn-optimize.md)
|
49 |
| -- [PostGIS高效解决行政区划归属查询问题](app/adcode-geodecode.md) |
50 |
| -- [5分钟用PgSQL实现推荐系统](app/pg-recsys.md) |
| 46 | +- [PostGIS高效解决行政区划归属查询问题](app/adcode.md) |
| 47 | +- [5分钟用PgSQL实现推荐系统](app/recsys-itemcf.md) |
51 | 48 | - [新冠疫情数据大盘](http://demo.pigsty.cc/d/covid-overview)
|
52 | 49 | - [基于Pigsty呈现NOAA ISD数据集](http://demo.pigsty.cc/d/isd-overview)
|
53 |
| -- 个人博客网站数据库设计 |
54 |
| -- 使用PG监控PG:元数据库设计 |
55 |
| -- 标签管理系统元数据库设计 |
56 |
| -- 实时用户画s像系统数据库设计 |
57 |
| -- PostGraphQL:使用自动生成的API解放生产力 |
58 | 50 |
|
59 | 51 | ### **功能实现**
|
60 | 52 |
|
61 | 53 | - [IP归属地查询的高效实现](app/geoip.md)
|
62 | 54 | - [PostgreSQL高级模糊查询](app/fuzzymatch.md)
|
63 | 55 | - [UUID:性质、原理、与应用](app/uuid.md)
|
64 |
| -- [PostgreSQL CDC: 变更数据捕获](post/pg-cdc.md) |
65 |
| -- [使用审计触发器自动记录数据变更](app/audit-change.md) |
66 |
| -- [实现基于通知触发器的逻辑复制](app/notify-trigger-based-repl.md) |
67 |
| -- 使用三维/四维点存储时空轨迹 |
68 |
| -- 连接池:连接数背后的问题 |
69 |
| -- QPS/TPS:一个容易误解的指标 |
70 |
| -- 自动化后端:PostGraphQL, PgRest, PostgRest横向对比 |
71 |
| -- postgres_fdw应用:管理远程数据库 |
| 56 | +- [PostgreSQL CDC: 变更数据捕获](app/cdc.md) |
| 57 | +- [使用审计触发器自动记录数据变更](app/trigger-audit.md) |
| 58 | +- [实现基于通知触发器的逻辑复制](app/trigger-notify.md) |
72 | 59 |
|
73 | 60 |
|
74 | 61 | ### **SQL特性**
|
75 | 62 |
|
76 | 63 | - [并发异常那些事](post/concurrent-control.md)
|
77 |
| -- [PostgreSQL中的锁](app/pg-lock.md) |
78 |
| -- [PostgreSQL中的触发器](app/pg-trigger.md) |
79 |
| -- [PostgreSQL中的LOCALE](app/pg-locale.md) |
| 64 | +- [PostgreSQL中的锁](app/sql-lock.md) |
| 65 | +- [PostgreSQL中的触发器](app/sql-trigger.md) |
| 66 | +- [PostgreSQL中的序列号](app/sql-sequence.md) |
| 67 | +- [PostgreSQL中的LOCALE](app/sql-locale.md) |
| 68 | +- [PostgreSQL复制标识详解](app/sql-replica-identity.md) |
80 | 69 | - [PostgreSQL特色:Excluded约束](app/sql-exclude.md)
|
81 | 70 | - [PostgreSQL特色:Distinct On语法](app/sql-distinct-on.md)
|
82 | 71 | - [PostgreSQL函数易变性分类](app/sql-func-volatility.md)
|
83 |
| -- [PostgreSQL 12新特性:JSON Path](app/jsonpath.md) |
| 72 | +- [PostgreSQL 12新特性:JSON Path](app/sql-jsonpath.md) |
84 | 73 | - [PostGIS:DE9IM 空间相交模型](app/gis-de9im.md)
|
85 |
| -- PostgreSQL中的时间与时区 |
86 |
| -- Sequence的方方面面 |
87 |
| -- 常见索引类型及其应用场景 |
88 |
| -- PostgreSQL中的JOIN |
89 |
| -- 子查询还是CTE? |
90 |
| -- LATERAL JOIN |
91 |
| -- DISTINCT ON子句与除重 |
92 |
| -- 递归查询 |
93 |
| -- Advanced SQL |
94 |
| -- Pl/PgSQL快速上手 |
95 |
| -- 函数的权限管理 |
96 | 74 |
|
97 | 75 |
|
98 | 76 | ### **语言驱动**
|
|
106 | 84 | - PostgreSQL Node.JS驱动介绍:node-postgres
|
107 | 85 |
|
108 | 86 |
|
109 |
| -### **工具组件** |
110 |
| - |
111 |
| -- [使用Wireshark抓包分析PostgreSQL协议](tool/wireshark-capture.md) |
112 |
| -- [psqlrc使用基础](admin/psql.md) |
113 |
| -- [批量配置SSH免密登录](admin/ssh-add-key.md) |
114 |
| -- [组合使用psql与bash](admin/psql-and-bash.md) |
115 |
| -- [sysbench](tool/sysbench.md) |
116 |
| -- [pgbouncer安装](tool/pgbouncer-install.md) |
117 |
| -- [pgbouncer配置文件](tool/pgbouncer-config.md) |
118 |
| -- [pgbouncer使用方法](tool/pgbouncer-usage.md) |
119 |
| -- pgpool的应用方式 |
120 |
| -- 查看硬盘信息——smartctl |
121 |
| -- 查看网卡信息——ethtool |
122 |
| - |
123 | 87 | ----------------
|
124 | 88 |
|
125 | 89 |
|
|
128 | 92 | ### **规约习惯**
|
129 | 93 |
|
130 | 94 | - [PostgreSQL开发规约](post/pg-convention.md)
|
131 |
| -- PostgreSQL集群扩缩容规约 |
132 |
| -- PostgreSQL数据库模式变更规约 |
| 95 | +- [PostgreSQL集群扩缩容规约](admin/rule-scaling.md) |
133 | 96 | - [数据库集群管理概念与实体命名规范](admin/entity-and-naming.md)
|
134 | 97 |
|
| 98 | + |
| 99 | +### **日常操作** |
| 100 | + |
| 101 | +- [修改PostgreSQL配置](admin/alter-config.md) |
| 102 | +- [PostgreSQL 权限管理](admin/privilege.md) |
| 103 | + |
| 104 | + |
135 | 105 | ### **监控系统**
|
136 | 106 | - [Pigsty监控系统架构](mon/pigsty-overview.md)
|
137 |
| -- [Pigsty监控系统使用说明](mon/pigsty-introduction.md) |
| 107 | +- [Pigsty监控系统使用说明](https://pigsty.cc/#/zh-cn/c-arch) |
138 | 108 | - [PostgreSQL的KPI](mon/pg-load.md)
|
139 | 109 | - [监控PG中表的大小](mon/size.md)
|
140 | 110 | - [监控WAL生成速率](mon/wal-rate.md)
|
|
145 | 115 | - [监控索引:空间,膨胀,重复,闲置](mon/index-bloat.md)
|
146 | 116 | - [确保表没有访问](mon/table-have-access.md)
|
147 | 117 |
|
148 |
| - |
149 |
| -### **架构设计** |
150 |
| - |
151 |
| -- [PostgreSQL安装部署](admin/install.md) |
152 |
| -- [PostgreSQL日志配置](admin/logging.md) |
153 |
| -- [PostgreSQL复制方案](admin/replication-plan.md) |
154 |
| -- [PostgreSQL备份方案](admin/backup-plan.md) |
155 |
| -- [PostgreSQL报警系统](admin/alert-overview.md) |
156 |
| -- [PostgreSQL变更管理方案](admin/mange-change.md) |
157 |
| -- [PostgreSQL目录设计](admin/directory-design.md) |
158 |
| -- [PostgreSQL配置修改方式](admin/config.md) |
159 |
| -- [PostgreSQL客户端认证](admin/hba-auth.md) |
160 |
| -- [PostgreSQL角色权限](admin/privilege.md) |
161 |
| -- [PostgreSQL监控系统]((mon/overview.md)) |
162 |
| - |
163 |
| -### **安装部署** |
164 |
| - |
165 |
| -- [安装TimescaleDB](admin/install-timescale.md) |
166 |
| -- [安装PipelineDB](admin/install-pipelinedb.md) |
167 |
| -- [安装Citus]() |
168 |
| -- [PgAdmin Server 安装](tool/pgadmin-install.md) |
169 |
| -- [PgBackRest 中文文档](admin/pgbackrest.md) |
170 |
| -- [PgBackRest2中文文档](tool/pgbackrest.md) |
171 |
| -- QGIS安装与简单使用 |
172 |
| - |
173 | 118 | ### **升级迁移**
|
174 | 119 | - PostgreSQL逻辑复制不停机迁移方案
|
175 | 120 | - PostgreSQL原地大版本升级流程
|
176 |
| -- [飞行中换引擎:PostgreSQL不停机数据迁移](admin/migration-without-downtime.md) |
177 | 121 | - PostgreSQL 10.0 与先前版本的不兼容性统计
|
178 | 122 | - 垂直拆分,分库分表:指导原则
|
179 | 123 | - 水平拆分与分片:减数分裂方法
|
| 124 | +- [业务层逻辑复制实现不停机切换(Before 10)](admin/migration-without-downtime.md) |
180 | 125 |
|
181 | 126 | ### **备份恢复**
|
182 | 127 | - [PostgreSQL备份与恢复概览](admin/backup-overview.md)
|
183 | 128 | - [PostgreSQL复制延迟问题](admin/replication-delay.md)
|
| 129 | +- [Postgres逻辑复制详解](admin/logical-replication.md) |
184 | 130 | - 日志传输副本:WAL段复制
|
185 | 131 | - 备份:机制、流程、问题、方法
|
186 | 132 | - 复制拓扑设计:同步、异步、法定人数
|
|
196 | 142 | - 重建索引:细节与注意事项
|
197 | 143 | - ErrorTracking系统设计概览
|
198 | 144 |
|
199 |
| -### [**故障档案**](admin/pit/) |
200 |
| -- [故障档案:移走负载导致的性能恶化故障](admin/pit/download-failure.md) |
201 |
| -- [pg_dump导致的血案](admin/pit/search_path.md) |
202 |
| -- [PostgreSQL数据页损坏修复](admin/pit/page-corruption.md) |
203 |
| -- [故障档案:事务ID回卷故障](admin/pit/xid-wrap-around.md) |
204 |
| -- [故障档案:pg_repack导致的故障](admin/pit/pg_repack.md) |
205 |
| -- [故障档案:从删库到跑路](admin/pit/drop-database.md) |
206 |
| -- [Template0的清理与修复](admin/pit/vacuum-template0.md) |
207 |
| -- [内存错误导致操作系统丢弃页面缓存](admin/pit/drop-cache.md) |
| 145 | +### [**故障档案**](pit/) |
| 146 | +- [故障档案:移走负载导致的性能恶化故障](pit/download-failure.md) |
| 147 | +- [pg_dump导致的血案](pit/search_path.md) |
| 148 | +- [PostgreSQL数据页损坏修复](pit/page-corruption.md) |
| 149 | +- [故障档案:事务ID回卷故障](pit/xid-wrap-around.md) |
| 150 | +- [故障档案:pg_repack导致的故障](pit/pg_repack.md) |
| 151 | +- [故障档案:从删库到跑路](pit/drop-database.md) |
| 152 | +- [Template0的清理与修复](pit/vacuum-template0.md) |
| 153 | +- [内存错误导致操作系统丢弃页面缓存](pit/drop-cache.md) |
208 | 154 | - 磁盘写满故障
|
209 | 155 | - 救火:杀查询的正确姿势
|
210 | 156 | - 存疑事务:提交日志损坏问题分析与修复
|
|
213 | 159 | - 硬件故障导致的机器重启
|
214 | 160 | - Docker同一数据目录启动两个实例导致数据损坏
|
215 | 161 | - 级联复制的配置问题
|
| 162 | +- NOFILE配置导致文件描述符不够用 |
| 163 | +- NTP时间漂移导致的故障 |
216 | 164 |
|
217 | 165 |
|
218 | 166 | --------------------
|
219 | 167 |
|
220 | 168 | ## Architecture / 内核架构
|
221 | 169 |
|
222 | 170 | ### **源码细节**
|
223 |
| -- [PostgresSQL变更数据捕获](src/logical-decoding.md) |
224 |
| -- [PostgreSQL前后端协议概述](src/wire-protocol.md) |
225 |
| -- [PostgreSQL的逻辑结构与物理结构](src/logical-arch.md) |
226 |
| -- [PostgreSQL的事务隔离等级](src/isolation-level.md) |
| 171 | +- [PostgresSQL变更数据捕获](arch/logical-decoding.md) |
| 172 | +- [PostgreSQL前后端协议概述](arch/wire-protocol.md) |
| 173 | +- [PostgreSQL的逻辑结构与物理结构](arch/logical-arch.md) |
| 174 | +- [PostgreSQL的事务隔离等级](arch/isolation-level.md) |
227 | 175 | - 并发创建索引的实现方式(CREATE INDEX CONCURRENTLY)
|
228 | 176 | - GIN索引的实现原理
|
229 | 177 | - B树索引的原理与实现细节
|
|
237 | 185 | - PostgreSQL数据页结构
|
238 | 186 | - FDW的结构与编写
|
239 | 187 | - SSD Internal
|
240 |
| -- [GIN索引关键词匹配的时间复杂度为什么是O(n2)](ker/gin.md) |
241 |
| - |
242 |
| -### **架构设计** |
| 188 | +- [GIN索引关键词匹配的时间复杂度为什么是O(n2)](arch/gin.md) |
243 | 189 |
|
244 |
| -### **扩展插件** |
245 | 190 |
|
246 | 191 | ### **FDW**
|
247 |
| -- [FileFDW妙用无穷——从数据库读取系统信息](tool/file_fdw-intro.md) |
248 |
| -- [RedisFDW Installation](tool/redis_fdw-install.md) |
249 |
| -- [MongoFDW Installation](tool/mongo_fdw-install.md) |
250 |
| -- IMPORT FOREIGN SCHEMA与远程元数据管理 |
251 |
| -- MongoFDW设计与实现 |
252 |
| -- HBase FDW设计与实现 |
253 |
| -- 基于Multicorn编写FDW |
| 192 | + |
| 193 | +- [FileFDW妙用无穷——从数据库读取系统信息](arch/file_fdw-intro.md) |
| 194 | +- [RedisFDW Installation](arch/install-redis-fdw.md) |
| 195 | +- [MongoFDW Installation](arch/install-mongo-fdw.md) |
| 196 | + |
| 197 | + |
| 198 | + |
| 199 | +[MongoFDW安装](install-mongo-fdw.md) |
| 200 | + |
| 201 | +[](install-pipelinedb.md) |
| 202 | +[](install-postgis.md) |
| 203 | +[](install-redis-fdw.md) |
254 | 204 |
|
255 | 205 |
|
256 | 206 | --------------------
|
|
259 | 209 |
|
260 | 210 | > 用于解决某些特定问题的代码速查片段,临时笔记
|
261 | 211 |
|
262 |
| -### **工具速查** |
263 |
| -- [查看系统任务 —— top](tool/unix-top.md) |
264 |
| -- [查看内存使用 —— free](tool/unix-free.md) |
265 |
| -- [查看虚拟内存使用 —— vmstat](tool/unix-vmstat.md) |
266 |
| -- [查看IO —— iostat](tool/unix-iostat.md) |
| 212 | +### **PGSQL工具** |
| 213 | + |
| 214 | +- [`psql`命令速查] |
| 215 | +- [`pg_dump`命令速查] |
| 216 | +- [`pg_basebackup`命令速查] |
| 217 | +- psqlrc 配置基础 |
| 218 | +- 性能压测:`pgbench` |
| 219 | +- [性能压测:`sysbench`]() |
| 220 | +- [组合使用psql与bash](gist/psql-and-bash.md) |
| 221 | +- [pgbouncer安装](tool/pgbouncer-install.md) |
| 222 | +- [pgbouncer配置文件](tool/pgbouncer-config.md) |
| 223 | +- [pgbouncer使用方法](tool/pgbouncer-usage.md) |
| 224 | +- [PgAdmin安装](gist/install-pgadmin.md) |
| 225 | + |
| 226 | +### **操作系统工具** |
| 227 | + |
| 228 | +- [查看系统任务 —— top](gist/os-top.md) |
| 229 | +- [查看内存使用 —— free](gist/os-free.md) |
| 230 | +- [查看虚拟内存使用 —— vmstat](gist/os-vmstat.md) |
| 231 | +- [查看IO —— iostat](gist/os-iostat.md) |
| 232 | +- [测试磁盘性能 —— `fio`](gist/os-fio.md) |
| 233 | +- [批量配置SSH免密登录](gist/os-ssh-key.md) |
| 234 | +- 查看硬盘信息 —— `smartctl` |
| 235 | +- 查看网卡信息 —— `ethtool` |
| 236 | +- 查看NUMA信息 —— `numactl` |
| 237 | +- 查看时间信息 —— `timedatectl` |
| 238 | +- 调整优化方案 —— `tuned-adm` |
| 239 | + |
267 | 240 |
|
268 | 241 |
|
269 | 242 | ### **临时笔记**
|
|
274 | 247 | - [找出并清除表中重复的记录](http://blog.theodo.fr/2018/01/search-destroy-duplicate-rows-postgresql/)
|
275 | 248 | - 为分区表添加索引
|
276 | 249 | - 利用统计信息分批实现大表全表更新
|
| 250 | +- [如何在LB后面获取客户端真实IP](gist/toa-get-client-ip-behind-lb.md) |
277 | 251 |
|
| 252 | +### **工具组件** |
278 | 253 |
|
279 |
| - |
| 254 | +- [使用Wireshark抓包分析PostgreSQL协议](tool/wireshark-capture.md) |
280 | 255 |
|
281 | 256 | --------------------
|
282 | 257 |
|
|
0 commit comments