读:OpenAI怎样使用PostgreSQL支持8亿用户
读了下这篇文章 Scaling PostgreSQL to power 800 million ChatGPT usershttps://openai.com/index/scaling-postgresql/ 简单总结了下遇到的问题和解决方案,我对数据库和高级特性了解不是很多,学习中。 可分片的高
https://openai.com/index/scaling-postgresql/ ↗ https://www.pgevents.ca/events/pgconfdev2025/schedule/session/433-scaling-postgres-to-the-next-level-at-openai/ ↗ https://www.pgevents.ca/events/pgconfdev2025/sessions/session/433/slides/97/Postgres%20Conf%202025%20(Bohan).pdf ↗ https://vonng.com/db/openai-pg/ ↗ https://vonng.com/pg/openai-postgres/ ↗
读了下这篇文章 Scaling PostgreSQL to power 800 million ChatGPT users ↗ 简单总结了下遇到的问题和解决方案,我对数据库和高级特性了解不是很多,学习中。
面临的问题#
写入压力#
可分片的高写入负载的写操作迁移到分片数据库系统中 异步写入 限制执行速率
查询优化#
减少连表查询 在应用层处理负载连接查询 审查ORM生成的SQL
单点故障#
读写分离 主节点故障,写失败不可避免,但是读仍然可用,降低u事故等级 备份、热备份
工作负载隔离#
多线程下,但个线程负载高导致影响到其与线程工作 高负载操作路由到专用实例 请求分级,分高优先级、低优先级
连接池#
空闲连接未断开导致触达连接数上限 部署PgBouncer
缓存#
缓存击穿问题 同一个key,在cache miss时,只允许一个查询请求到达数据 给cache miss时,查询数据库的操作加锁,第一个请求查询数据库,后续请求等待缓存填充
数据下发#
主节点需要给所有从节点下发WAL 链式下发,主节点只给一部分从节点下发,再由从节点向其他从a节点下发
QPS限制#
多层QPS限制 应用层 连接池 PgBouncer 数据库
表结构变更#
表结构变更可能触发表重写 仅允许轻量级变更,例如新增或删除列