PostgreSQL 数据库性能提升的几个方面

PostgreSQL 数据库性能提升的几个方面,第1张

概述PostgreSQL提供了一些帮助提升性能的功能。主要有一些几个方面。 1.使用EXPLAIN    EXPLAIN命令可以查看执行计划,在前面的blog中已经介绍过。这个方法是我们最主要的调试工具。   2.及时更新执行计划中使用的统计信息    由于统计 信息不是每次 *** 作数据 库 都 进 行更新的,一般是在 VACUUM 、 ANALYZE 、 CREATE INDEX等DDL执行的时候会更新
Postgresql提供了一些帮助提升性能的功能。主要有一些几个方面。
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 数据库性能提升的几个方面全部内容,希望文章能够帮你解决PostgreSQL 数据库性能提升的几个方面所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1180360.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存