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。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 PostgreSQL 数据库性能提升的几个方面
相关文章
- python-Python与PostgreSQL数据库-PostgreSQL数据库的基本知识(一)
- Rust 连接 PostgreSQL 数据库的详细过程
- PostgreSQL数据库基础 之 字符串处理与日期处理操作
- PostgreSQL 数据库基础 如何修改视图的操作
- PostgreSQL数据库中匿名块的写法实例
- SpringBoot连接使用PostgreSql数据库的方法
- PostgreSQL数据库事务出现未知状态的处理方法
- PostgreSQL 查看数据库,索引,表,表空间大小的示例代码
- postgresql—-UNION&&INTERSECT&&EXCEPT详解数据库
- postgresql—-JOIN之多表查询详解数据库
- PostgreSQL数据库同步实践(postgresql同步)
- PostgreSQL编码协议:改变数据库架构(postgresql协议)
- 查询深入探索PostgreSQL慢查询性能优化(postgresql慢)
- 数据库使用PostgreSQL实现分布式数据库构建(postgresql分布式)
- 的性能优势Postgresql在性能方面的优势——德哥的深度解读(德哥postgresql)
- 基于Zabbix的PostgreSQL数据库监控(zabbix监控postgresql)
- PostgreSQL接口:轻松连接数据库(postgresql接口)
- 深入了解PostgreSQL数据类型:解决您的数据库存储难题(postgresql数据类型)
- PostgreSQL库:高可靠性企业级数据库的首选(postgresql库)
- 数据库PostgreSQL:开放源码的分布式数据库管理系统(postgresql开源)
- 修复PostgreSQL:解决数据库难题(postgresql问题)
- 利用 PostgreSQL 脚本加速数据库操作!(postgresql脚本)
- 如何在PostgreSQL中创建新用户(postgresql创建用户)
- 如何顺利升级PostgreSQL数据库?(升级postgresql)
- PostgreSQL实现MSSQL数据库的同步(pgsql同步mssql)
- 新手快速登录Postgresql数据库(登录postgresql)
- PostgreSQL数据库服务端监听设置及客户端连接方法教程