`

PostgreSQL配置优化

 
阅读更多
http://my.oschina.net/u/267858/blog/471913

测试工具

工具名称 pgbench
数据量 200W(整个数据库大小约为300M)
模拟客户端数 4
线程数 4
测试时间 60秒
准备命令:pgbench -i -s 20 pgbenchdb

测试命令:pgbench -r -j4 -c4 -T60 testdb


配置文件

默认的配置配置文件是保存在/etc/postgresql/VERSION/main目录下的postgresql.conf文件

如果想查看参数修改是否生效,可以用psql连接到数据库后,用<show 选项名> 来查看。

如果要修改shared_buffers, 在ubuntu下可能需要执行命令<sysctl -w>Managing Kernel Resources


主要选项

选项 默认值 说明 是否优化 原因
max_connections 100 允许客户端连接的最大数目 否 因为在测试的过程中,100个连接已经足够
fsync on 强制把数据同步更新到磁盘 是 因为系统的IO压力很大,为了更好的测试其他配置的影响,把改参数改为off
shared_buffers 24MB 决定有多少内存可以被PostgreSQL用于缓存数据(推荐内存的1/4) 是 在IO压力很大的情况下,提高该值可以减少IO
work_mem 1MB 使内部排序和一些复杂的查询都在这个buffer中完成 是 有助提高排序等操作的速度,并且减低IO
effective_cache_size 128MB 优化器假设一个查询可以用的最大内存,和shared_buffers无关(推荐内存的1/2) 是 设置稍大,优化器更倾向使用索引扫描而不是顺序扫描
maintenance_work_mem 16MB 这里定义的内存只是被VACUUM等耗费资源较多的命令调用时使用 是 把该值调大,能加快命令的执行
wal_buffer 768kB 日志缓存区的大小 是 可以降低IO,如果遇上比较多的并发短事务,应该和commit_delay一起用
checkpoint_segments 3 设置wal log的最大数量数(一个log的大小为16M) 是 默认的48M的缓存是一个严重的瓶颈,基本上都要设置为10以上
checkpoint_completion_target 0.5 表示checkpoint的完成时间要在两个checkpoint间隔时间的N%内完成 是 能降低平均写入的开销
commit_delay 0 事务提交后,日志写到wal log上到wal_buffer写入到磁盘的时间间隔。需要配合commit_sibling 是 能够一次写入多个事务,减少IO,提高性能
commit_siblings 5 设置触发commit_delay的并发事务数,根据并发事务多少来配置 是 减少IO,提高性能

测试数据

测试的数据是运行3次,取平均值。

关闭fsync是为了更好的体现出其他参数对PostgreSQL的影响。

参数 修改值 事务总数 tps(包括建立连接) tps(不包括建立连接)
默认设置
8464 140.999792 141.016182
fsync off 92571 1479.969755 1480.163355
shared_buffers 1GB 100055 1635.759275 1635.977823
work_mem 10MB 101209 1665.804812 1666.04082
effective_cache_size 2GB 98209 1636.733152 1636.970271
maintenance_work_mem 512MB 92930 1548.029233 1548.223108
checkpoint_segments 32 195982 3265.995 3266.471064
checkpoint_completion_target 0.9 194390 3239.406493 3239.842596
wal_buffer 8MB 198639 3310.241458 3310.724067
恢复fsync off 11157 185.883542 185.909849
commit_delay && commit_siblings 10 && 4 11229 187.103538 187.131747

总结


事务总数 tps(包括建立连接) tps(不包括建立连接)
优化前 8464 140.999792 141.016182
优化后(fsync=on) 11229 187.103538 187.131747
优化后(fsync=off) 198639 3310.241458 3310.724067
在fsync打开的情况下,优化后性能能够提升30%左右。因为有部分优化选项在默认的SQL测试语句中没有体现出它的优势,如果到实际测试中,提 升应该不止30%。 测试的过程中,主要的瓶颈就在系统的IO,如果需要减少IO的负荷,最直接的方法就是把fsync关闭,但是这样就会在掉电的情况下,可能会丢失部分数 据。
分享到:
评论

相关推荐

    postgresql 优化配置.xlsx

    postgresql 优化配置,各种内存、连接数、缓存、并发、日志等策略配置。

    德哥的Postgresql数据库优化的培训视频(网盘链接)

    德哥的Postgresql数据库优化的培训视频,从Postgtesql的安装,配置,到数据库配置文件postgresql.conf的讲解,执行计划的查看,非常详细。

    PostgreSQL 性能优化宝典

    综合以上内容,我们了解到了PostgreSQL性能优化是一个全面而复杂的过程,需要从系统的各个层面出发,通过细致的配置和优化措施,才能达到最佳的性能状态。同时,这个过程也需要不断地学习和实践,才能真正掌握...

    postgreSQL配置

    你可以继续探索PostgreSQL的各种高级特性,如触发器、存储过程、索引优化等,以提升数据库的性能和功能。同时,学习SQL语言的高级部分,如JOIN操作、窗口函数和聚合函数,将帮助你更好地管理和查询数据库。

    PostgreSQL安装配置文档

    1. **复杂查询支持**:PostgreSQL能够执行复杂的SQL查询,并且支持多种查询优化技术。 2. **外键约束**:确保数据表之间的参照完整性。 3. **触发器机制**:允许用户定义响应特定事件时自动执行的操作。 4. **视图...

    PostgreSQL 数据库优化 培训视频【18集】

    根据提供的标题、描述、标签及部分内容,我们可以提炼出与PostgreSQL数据库优化相关的多个知识点。以下是对这些知识点的详细阐述: ### PostgreSQL数据库优化培训视频概述 PostgreSQL是一款强大的开源对象关系型...

    PostgreSQL性能优化最佳综合案例实践

    总结来说,本案例通过构建一个包含基本数据库操作的业务模型,通过模拟业务请求和不断调整配置,给出了一个PostgreSQL性能优化的综合实践。这个过程涉及了数据库参数调整、索引优化、SQL查询优化等多个方面,为...

    PostgreSQL 性能优化培训 3 DAY

    5. **SSH配置优化** - 在`/etc/ssh/sshd_config`和`/etc/ssh/ssh_config`文件中禁用DNS解析、公钥认证和GSSAPI认证,以提高SSH连接的安全性和响应速度。 6. **系统参数调整** - 调整一系列内核参数,如`kernel....

    mycat-server,配置的postgresql集群的案例

    5. **测试与优化**: 配置完成后,进行功能测试和性能测试,根据测试结果调整Mycat的配置,以达到最佳的运行状态。 6. **监控与维护**: 在生产环境中,定期监控Mycat和PostgreSQL的状态,确保数据一致性,及时发现并...

    ArcGIS平台中PostgreSQL数据连接配置总结

    ### ArcGIS平台中PostgreSQL数据连接配置总结 #### 一、前提条件 ##### 1.1 ArcGIS 平台软件支持的操作系统要求 在 ArcGIS 10.1 及之后的版本中,ArcGIS for Server 产品要求操作系统必须是 64 位的。无论是 ...

    Linux postgresql 安装配置

    ### Linux PostgreSQL安装与配置详解 #### 一、安装PostgreSQL 在Linux环境下,PostgreSQL数据库的安装主要通过RPM包管理器完成。本节将详细阐述如何在Linux系统上安装PostgreSQL及其相关组件。 ##### 1.1 RPM包...

    ubuntu12.04 配置postgresql

    5. **调整内核参数**:尝试修改`/etc/sysctl.conf`文件以优化内核参数,如`kernel.shmmax`,这会影响PostgreSQL的共享内存使用。但在这里,由于无法生效,可以跳过这一步。 6. **配置PostgreSQL**:编辑`/etc/...

    postgresql杂志第0期中文版 最大化postgresql性能

    **PostgreSQL杂志第0期中文版 - 最大化PostgreSQL性能** ...总的来说,最大化PostgreSQL性能涉及多个层面,包括数据库设计、查询优化、硬件配置以及监控与维护。不断学习和实践,才能确保数据库系统的高效运行。

    PostgreSQL MySQL Oracle数据库设计优化完美攻略

    无论我们选择哪种数据库系统——PostgreSQL、MySQL还是Oracle,设计阶段的优化措施都将对系统的性能和可靠性产生深远的影响。本文将深入探讨在数据库设计阶段,如何通过合理策略来优化性能,以确保设计出的数据库既...

    postgresql介绍使用 和mysql的对比优化

    通过调整索引、优化查询语句或者修改数据库配置,可以显著提升查询速度。例如,创建合适的复合索引、避免全表扫描和减少子查询都能有效改善性能。 在《数据库查询优化器的艺术原理解析与SQL性能》一书中,深入探讨...

    PostgreSQL 12.2 中文手册

    接下来,手册会深入讲解如何安装和配置PostgreSQL,提供安装向导和配置文件的详细说明。此外,手册也会涉及数据库的管理任务,比如创建和管理数据库、用户、权限和角色等。 在性能优化方面,手册会探讨如何执行查询...

    postgresql安装配置文档

    **PostgreSQL安装配置详解** PostgreSQL是一款开源的关系型数据库管理系统(RDBMS),因其强大的功能和高度的稳定性而被广泛应用于各种规模的企业和项目中。本文档将详细讲解如何在不同的操作系统上安装和配置...

    PostgreSQL数据库性能调优指南.pptx

    * 数据库配置优化:数据库配置参数的设置对数据库性能的影响非常大,需要根据实际情况选择合适的数据库配置参数。 应用层优化 * 应用层架构设计:应用层架构设计对数据库性能的影响非常大,需要根据实际情况选择...

    PostgreSQL的性能调优涉及多个方面,包括但不限于配置参数优化、索引优化、查询优化、硬件资源优化等

    PostgreSQL的性能调优涉及多个方面,包括但不限于配置参数优化、索引优化、查询优化、硬件资源优化等。 使用索引:在数据库中创建适当的索引可以大大提高查询性能。确保对经常用于查询条件的列创建索引。 避免...

    Postgres查询优化方案

    在数据库管理领域,PostgreSQL(通常简称为Postgres)是一种功能强大的开源关系型数据库系统,以其高度可扩展性和丰富的功能而备受青睐。然而,随着数据量的急剧增长,特别是达到上亿级别的数据规模,查询性能优化...

Global site tag (gtag.js) - Google Analytics