PostgreSQL初学注意点:

这是一些PostgreSQL初学者需要注意的有用信息:

1)元组tuples是行的物理版本;你可以通过选择隐藏列ctid、xmin、xmax开始了解它们(所有表都有);尽早开始关注这个,以后你就不会对缓慢的大量DELETE不回收磁盘空间、自动真空和臃肿问题感到惊讶了。

  1. 总是使用BUFFERS检查EXPLAIN ANALYZE - 正确的命令是: EXPLAIN (ANALYZE, BUFFERS)

3)扔掉pgAdmin--坚持使用tmux&psql,或者,如果你确实需要UI,使用DBeaver或DataGrip或Postico(但仍然要学习psql-fu,会有回报的)

4)启用尽可能多的日志记录: log_checkpoints = 0,log_autovacuum_min_duration = 0,log_temp_files = 0,log_lock_waitits = on, 以及尽可能低的非负的log_min_duration_statement,比如200ms(注意过多日志记录引起的观察者效应)

5)安装pg_stat_statements: 这是必须的; 如果可以,安装pg_stat_kcache和psg_wait_sampling(或psentinel)以及auto_explain(这些家伙需要在设置上做一些决定)。

  1. 使用PostgreSQL的Database_Lab瘦克隆和分支来开发和测试 (是的,ChatGPT可能会有帮助,但它经常会产生幻觉,所以一定要检查它)

7)确保启用数据校验和

  1. 调整autovacuum,使其频繁运行并加快速度

9)查询优化最终会比配置调整更重要,也更经常需要: 调整.conf到 "足够好",然后专注于持续使用pg_stat_statements和EXPLAIN(ANALYZE,BUFFERS)。

10)不幸的是,索引需要重建,因为它们的健康状况会随着时间的推移而下降: 即使是在PG14+中经过良好调优的autovacuum中也是如此; 为此做好准备,最好以自动化的方式进行;并定期清理未使用的和冗余的索引。

相关推荐
To_OC4 小时前
写了三遍 Todo List,我终于搞懂了 React 父子组件到底怎么通信
前端·javascript·react.js
勇往直前plus4 小时前
Vue3(篇一) 核心概念——响应式模板语法与组件基础
前端·javascript·vue.js
用户938515635076 小时前
从零搭建 AI 日记助手:用 Milvus 向量数据库 + RAG 让机器读懂你的每一天
javascript·人工智能·全栈
a1117767 小时前
坦克大战3D Three.js 3D (开源项目)
开发语言·javascript·3d
kyriewen8 小时前
别再乱用useEffect了——你写的10个里有8个不该存在
前端·javascript·react.js
Ivanqhz8 小时前
Rust &‘static str浅析
java·前端·javascript·rust
zandy10119 小时前
衡石 Agentic BI的ReAct 推理框架在 Agentic BI 中的工程化实践
前端·javascript·react.js
郝亚军10 小时前
webstorm如何创建vue 3.js
javascript·vue.js·webstorm
এ慕ོ冬℘゜10 小时前
jQuery attr() 方法超详细讲解:属性获取、赋值、实战踩坑全解
前端·javascript·jquery
Hilaku11 小时前
为什么大厂对前端算法要求极高?
前端·javascript·程序员