前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PostgreSQL 合理连接数设置

PostgreSQL 合理连接数设置

作者头像
运维开发王义杰
发布2023-08-21 13:18:59
2.9K0
发布2023-08-21 13:18:59
举报
文章被收录于专栏:运维开发王义杰

PostgreSQL的默认最大连接数是100个,但是这个参数可以在服务器启动时进行设置。如果您想增加最大连接数,您还需要同时增加shared_buffers和kernel.shmmax的值,以提高数据库的缓存能力和性能。但是,增加连接数也会消耗更多的内存,所以您应该根据您的系统资源和应用需求来合理调整这个参数。如果您的应用需要大量的连接,您可以考虑使用pg_bouncer等工具来进行连接池管理。

kernel.shmmax是一个内核参数,它定义了一个Linux进程可以在其虚拟地址空间中分配的单个共享内存段的最大字节数。这个参数会影响到数据库系统(如Oracle)的性能,因为数据库系统会使用共享内存来存储SGA(共享全局区)。如果kernel.shmmax设置得太小,可能会导致数据库无法分配足够的共享内存,从而出现错误信息3。如果kernel.shmmax设置得太大,可能会导致系统的内存压力增加,从而影响其他进程的运行。因此,kernel.shmmax应该根据系统的内存大小和数据库的需求来合理设置。

设置kernel.shmmax内核参数没有一个固定的标准,它取决于您的系统的内存大小和数据库的需求。一般来说,您可以参考以下几个原则:

- 对于64位服务器,您可以使用内存的一半作为kernel.shmmax的值

- 对于32位服务器,您可以使用3GB作为kernel.shmmax的值

- kernel.shmmax应该略大于数据库的SGA(共享全局区)的大小

- kernel.shmmax不应该超过系统内存的40%,以免影响其他进程的运行

举个例子,如果您的系统是64位的,内存是16GB,数据库的SGA是4GB,那么您可以设置kernel.shmmax为8GB(16GB/2),这样既能满足数据库的需求,又能避免内存压力过大。

参考:

(1)Kernel parameter SHMALL and SHMAX - Unix & Linux Stack Exchange. https://unix.stackexchange.com/questions/298354/kernel-parameter-shmall-and-shmax

(2) Changing Kernel Parameter Values - Oracle Help Center. https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/changing-kernel-parameter-values.html

(3) Linux shmmax and shmall - how to set correct unit?. https://stackoverflow.com/questions/52751256/linux-shmmax-and-shmall-how-to-set-correct-unit

postgresql如何配置SGA

SGA(共享全局区)是Oracle数据库的一个重要概念,它是数据库实例的一块共享内存,用于存储缓存、数据字典、SQL语句等信息。PostgreSQL数据库没有完全等同于SGA的概念,但是它也有一些参数可以用来配置数据库的内存使用和缓存策略。这些参数包括:

- shared_buffers:这个参数决定了PostgreSQL用于缓存数据和索引的内存大小。它类似于Oracle的DB_CACHE_SIZE参数。一般来说,这个参数应该设置为系统内存的10%到25%之间,但是不要超过系统内存的40%。

- work_mem:这个参数决定了每个排序或哈希操作可以使用的内存大小。它类似于Oracle的SORT_AREA_SIZE参数。如果这个参数设置得太小,可能会导致排序或哈希操作使用临时文件,从而降低性能。如果设置得太大,可能会导致系统内存不足,从而触发交换或OOM(内存溢出)。一般来说,这个参数可以根据系统内存的25%除以最大连接数来计算。

- effective_cache_size:这个参数是一个估计值,用来告诉PostgreSQL规划器操作系统可以用于缓存文件的内存大小。它类似于Oracle的DB_FILE_MULTIBLOCK_READ_COUNT参数。这个参数并不分配实际的内存,而是影响查询优化器的成本计算。一般来说,这个参数可以设置为系统内存的50%到75%之间。

以上是一些常见的和内存相关的配置参数,您还可以参考PostgreSQL文档²了解更多的细节和其他参数。

参考:

(1) Chapter 20. Server Configuration - PostgreSQL Documentation. https://www.postgresql.org/docs/current/runtime-config.html

(2) PostgreSQL: Documentation: 15: 20.1. Setting Parameters. https://www.postgresql.org/docs/current/config-setting.html

(3) How to tune PostgreSQL for memory | EDB. https://www.enterprisedb.com/postgres-tutorials/how-tune-postgresql-memory

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-04-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发王义杰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档