digoal
2024-04-26
PostgreSQL , PolarDB , DuckDB , 数据库原理 , 数据库实验 , 大学 , flowchat , 模块 , 性能优化综合实验
十几年前写的文章, 想不到被用到大学数据库实验课了
最近去温州大学交流, 黄老师偷偷把我拉到一旁, 掏出了一本秘籍《数据库实验手册》, 让我给学生们讲讲, 我有点懵为什么要我来给学生讲, 原来老师借鉴了我十几年前写的《PostgreSQL性能优化综合案例讲解》的文章, 老师带着学生在实验课上做了里面的实验, 所以想让我说明一下为什么要这么设计? 老师真是用心良苦.
文章原文请参考:
201203/20120313_02.md 《PostgreSQL性能优化综合案例讲解 - 2》
201203/20120313_01.md 《PostgreSQL性能优化综合案例讲解 - 1》
这个优化实验的业务场景很简单, 用户登陆和用户退出, 查询用户信息, 记录用户行为, 更新用户当前的状态. 整个优化涉及到十几个步骤, 实际上覆盖到了数据库的大部分模块, 老师挑选这个实验给同学们做真的用心良苦.
涉及的一些模块/知识点:
- 网络交互
- sql parser
- sql rewrite/优化
- 协议/simple query|绑定变量
- IO
- buffer pool/page cache
- 锁管理
- wal 持久化行为
- cbo: 索引/全表扫描 等
- 索引结构和索引深度
- 业务或架构侧行为: 读写分离
- 业务或架构侧行为: 拆表
- 业务或架构侧行为: 表空间/IO均分/lvm
- 业务或架构侧行为: 拆库
- 业务或架构侧行为: 连接池
建议还可以给同学们参考一下PostgreSQL flowchat : https://www.postgresql.org/developer/backend/
以上方法是我们在了解数据库原理, 把数据库当成白盒后的性能优化思路, 那如果是个黑盒呢? 可以参考如下方法: