1.使用EXPLAIN
EXPLAIN命令可以查看执行计划,在前面的blog中已经介绍过。这个方法是我们最主要的调试工具。
2.及时更新执行计划中使用的统计信息
由于统计 信息不是每次操作数据 库 都 进 行更新的,一般是在 VACUUM 、 ANALYZE 、 CREATE INDEX等DDL执行的时候会更新统计信息,
因此执 行 计 划所用的 统计 信息很有可能比 较 旧。 这样执 行 计 划的分析 结 果可能 误 差会 变 大。
以下是表tenk1的相关的一部分统计信息。
SELECT relname, relkind, reltuples, relpages
FROM pg_class
WHERE relname LIKE 'tenk1%';
relname | relkind | reltuples | relpages
----------------------+---------+-----------+----------
tenk1 | r | 10000 | 358
tenk1_hundred | i | 10000 | 30
tenk1_thous_tenthous | i | 10000 | 30
tenk1_unique1 | i | 10000 | 30
tenk1_unique2 | i | 10000 | 30
(5 rows)
其中 relkind是类型,r是自身表,i是索引index;reltuples是项目数;relpages是所占硬盘的块数。
3.明确用join来关联表
一般写法:SELECT * FROM a, b, c WHERE a.id = b.id AND b.ref = c.id;
如果明确用join的话,执行时候执行计划相对容易控制一些。
例子:
SELECT * FROM a CROSS JOIN b CROSS JOIN c WHERE a.id = b.id AND b.ref = c.id;
SELECT * FROM a JOIN (b JOIN c ON (b.ref = c.id)) ON (a.id = b.id);
4.关闭自动提交(autocommit=false)
5.多次插入数据是用copy命令更有效率
我们有的处理中要对同一张表执行很多次insert操作。这个时候我们用copy命令更有效率。因为insert一次,其相关的index都要做一次,比较花费时间。
6.临时删除index
有时候我们在备份和重新导入数据的时候,如果数据量很大的话,要很几个小时才能完成。这个时候可以先把index删除掉。导入在建index。
7.外键关联的删除
如果表的有外键的话,每次操作都没去check外键整合性。因此比较慢。数据导入后在建立外键也是一种选择。
8.增加maintenance_work_mem参数大小
增加这个参数可以提升CREATE INDEX和ALTER TABLE ADD FOREIGN KEY的执行效率。
9.增加checkpoint_segments参数的大小
增加这个参数可以提升大量数据导入时候的速度。
10.设置archive_mode无效
这个参数设置为无效的时候,能够提升以下的操作的速度
・CREATE TABLE AS SELECT
・CREATE INDEX
・ALTER TABLE SET TABLESPACE
・CLUSTER等。
11.最后执行VACUUM ANALYZE
表中数据大量变化的时候建议执行VACUUM ANALYZE。
PostgreSQL 数据库性能提升的几个方面
2020-04-21 15:09PostgreSQL教程网 PostgreSQL
PostgreSQL提供了一些帮助提升性能的功能。主要有一些几个方面。
延伸 · 阅读
- 2022-03-08分布式 PostgreSQL之Citus 架构
- 2022-03-01目前好用的五大PostgreSQL GUI 可视化工具
- 2022-03-01三大流行数据库(MongoDB、PostgreSQL和Harper)大比拼
- 2022-03-01在 Kubernetes 上运行 Pgpool-Il 实现 PostgreSQL 查询(读
- 2022-02-28详解Linux中PostgreSQL和PostGIS的安装和使用
- 2022-02-25教你如何在Centos8-stream安装PostgreSQL13
- PostgreSQL
postgresql 数据库中的数据转换
postgres8.3以后,字段数据之间的默认转换取消了。如果需要进行数据变换的话,在postgresql数据库中,我们可以用"::"来进行字段数据的类型转换。...
- PostgreSQL
postgresql 中的to_char()常用操作
这篇文章主要介绍了postgresql 中的to_char()常用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...
- PostgreSQL
深入理解PostgreSQL的MVCC并发处理方式
这篇文章主要介绍了深入理解PostgreSQL的MVCC并发处理方式,文中同时介绍了MVCC的缺点,需要的朋友可以参考下 ...
- PostgreSQL
Postgresql开启远程访问的步骤全纪录
postgre一般默认为本地连接,不支持远程访问,所以如果要开启远程访问,需要更改安装文件的配置。下面这篇文章主要给大家介绍了关于Postgresql开启远程...
- PostgreSQL
PostgreSQL标准建表语句分享
这篇文章主要介绍了PostgreSQL标准建表语句分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...
- PostgreSQL
RDS PostgreSQL一键大版本升级技术解密
一、PostgreSQL行业位置 (一)行业位置 在讨论PostgreSQL(下面简称为PG)在整个数据库行业的位置之前,我们先看一下阿里云数据库在全球的数据库行业里的...
- PostgreSQL
Postgresql查询效率计算初探
这篇文章主要给大家介绍了关于Postgresql查询效率计算的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Postgresql具有一定的参考学习价...
- PostgreSQL
分布式 PostgreSQL之Citus 架构
节点 Citus 是一种 PostgreSQL 扩展,它允许数据库服务器(称为节点)在“无共享(shared nothing)”架构中相互协调。这些节点形成一个集群,允许 PostgreSQL 保存比单...