教程集 www.jiaochengji.com
教程集 >  数据库  >  Postgre SQL  >  正文 提升 PostgreSQL 数据库性能的11个方法

提升 PostgreSQL 数据库性能的11个方法

发布时间:2014-07-20   编辑:jiaochengji.com
本文介绍PostgreSQL提供的一些帮助提升性能的功能,主要包括以下几个方面。

本文介绍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 数据库性能的11个方法
PostgreSQL从菜鸟到专家系列教程(10)Windows中安装PostgreSQL
PostgreSQL从菜鸟到专家系列教程(1)PostgreSQL介绍
Django2.2版本的新特性都有哪些
golang版本的数据库迁移工具(数据库升级回滚)
PostgreSQL从菜鸟到专家系列教程(2)Linux和Unix系统上源码编译安装PostgreSQL
PostgreSQL从菜鸟到专家系列教程(9)数据定义 数字数据类型 数组
PostgreSQL从菜鸟到专家系列教程(7)数据定义 布尔数据类型
PostgreSQL从菜鸟到专家系列教程(6)Linux和Unix上配置PostgreSQL
PostgreSQL从菜鸟到专家系列教程(3)数据库的数据存取设计

关键词: PostgreSQL教程   
[关闭]
~ ~