9 hours ago
- 从良好的模式设计开始:使用标识列、主键、带时区的时间戳和外键(对低流量表使用级联删除)。
- 通过使用索引(主键、唯一约束)来避免顺序扫描,编写高性能查询;使用复合索引时,将ORDER BY列放在最后。
- 保持事务简短,只锁定必要的行,并使用CREATE INDEX CONCURRENTLY以避免阻塞写入。
- 使用连接池(pgbouncer或内存池如pgxpool)来高效管理连接。
- 理解查询计划器:使用EXPLAIN ANALYZE调试慢查询,通过autovacuum保持表统计信息更新。
- 批量写入以提高吞吐量;调整autovacuum设置以防止死元组膨胀和事务ID回绕。
- 使用高级特性:FOR UPDATE SKIP LOCKED用于队列/租约操作,分区用于时间序列数据,触发器用于无需长事务的大表迁移。