• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >PostgreSQL > PostgreSQL 数据库性能提升的几个方面

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了postgresql数据库,postgresql数据库备份,postgresql数据库教程,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。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PostgreSQL教程(二十):PL/pgSQL过程语言
  • PostgreSQL教程(十九):SQL语言函数
  • PostgreSQL教程(十五):系统表详解
  • PostgreSQL教程(十四):数据库维护
  • PostgreSQL教程(十三):数据库管理详解
  • PostgreSQL教程(九):事物隔离介绍
  • PostgreSQL教程(四):数据类型详解
  • PostgreSQL教程(一):数据表详解
  • 在windows下手动初始化PostgreSQL数据库教程
  • 15个postgresql数据库实用命令分享

相关文章

  • 2017-05-11PostgreSQL教程(十七):客户端命令(1)
  • 2017-05-11PostgreSQL 创建表分区
  • 2017-05-11PostgreSQL中关闭死锁进程的方法
  • 2017-05-11深入解读PostgreSQL中的序列及其相关函数的用法
  • 2017-05-11Debian中PostgreSQL数据库安装配置实例
  • 2017-05-11SQL Server数据迁移至PostgreSQL出错的解释以及解决方案
  • 2017-05-11用PostgreSQL数据库做地理位置app应用
  • 2017-05-11PostgreSQL中常用的时间日期脚本使用教程
  • 2017-05-11Postgre数据库Insert 、Query性能优化详解
  • 2017-05-11Windows下PostgreSQL安装图解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • PostgreSQL安装、配置及简单使用方法
    • PostgreSQL教程(十五):系统表详解
    • PostgreSQL教程(十四):数据库维护
    • 用PostgreSQL数据库做地理位置app应用
    • PostgreSQL管理工具phpPgAdmin入门指南
    • PostgreSQL 数据库性能提升的几个方面
    • Postgresql ALTER语句常用操作小结
    • Debian中PostgreSQL数据库安装配置实例
    • PostgreSQL中调用存储过程并返回数据集实例
    • PostgreSQL的存储过程简单入门

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有