关于如何在PostgreSQL中调整数据库参数和配置的综合指南

关于如何在PostgreSQL中调整数据库参数和配置的综合指南

PostgreSQL是一个非常通用的数据库系统,能够在低资源环境和与各种其他应用程序共享的环境中高效运行。为了确保它将在许多不同的环境中正常运行,默认配置非常保守,不太适合高性能生产数据库。加上地理空间数据库具有不同使用模式的事实,数据往往由比非地理空间数据库更少、更大的记录组成,您可以看到默认配置不会完全适合我们的目的。

我想我们可以同意,每个人都想要一个快速的数据库。问题是:在哪些方面快速?

在数据库方面,“快”至少有两个不同的方向:

  • 每秒的事务数
  • 吞吐量或数据处理量

这些是相互关联的,但绝对不一样。两者在I/O方面的要求完全不同。一般来说,您希望不惜一切代价避免I/O。这是因为与访问内存中的数据、不同级别的CPU缓存甚至CPU寄存器相比,I/O总是很慢。根据经验,每一层都会减慢大约1:1000的访问速度。

对于每秒大量事务的高需求系统,您需要尽可能多的并发IO。对于具有高吞吐量的系统,您需要一个每秒可以交付尽可能多字节的IO子系统。

这导致需要在CPU附近拥有尽可能多的数据——例如,在RAM中。至少工作集,即在可接受的时间内给出答案所需的数据集,应该合适。

每个数据库引擎都有一个特定的内存布局,并为不同的目的处理不同的内存区域。

总结一下:我们需要避免IO,我们需要调整内存布局的大小,以便数据库能够有效地工作(并且,我假设所有其他任务都是根据正确的模式设计完成的)。

所有这些配置参数都可以在postgresql. conf数据库配置文件中进行编辑。这是一个常规文本文件,可以使用记事本或任何其他文本编辑器进行编辑。在服务器重新启动之前,更改不会生效。

注意:这些值仅为建议值。每个环境都会有所不同,需要进行测试以确定最佳配置。但是这一部分应该会让你有一个好的开始。

数据库参数

以下是一些参数,可以根据您的系统和工作负载进行调整以获得最佳性能。

shared_buffer

PostgreSQL缓冲区称为shared_buffer,是大多数操作系统中最有效的可调参数,该参数设置PostgreSQL将为缓存使用多少专用内存。

shared_buffer的默认值设置得很低,你不会从中得到多少好处。它设置得很低是因为某些机器和操作系统不支持更高的值。但是在大多数现代机器中,你需要增加这个值以获得最佳性能。

如果您有一个1GB或更大内存的专用数据库服务器,shared_buffers的合理起始值是系统内存的25%。您应该尝试一些较低和较高的值,因为在某些情况下,要获得最佳性能,您需要超过25%的设置。Windows系统上shared_buffers的有用范围通常从64MB到512MB。配置取决于您的机器、工作数据集和机器上的工作负载。

在生产环境中,可以观察到shared_buffer的较大值会提供非常好的性能,尽管您应该始终进行基准测试以找到正确的平衡。

# show shared_buffers;
shared_buffers
----------------
128MB

wal_buffers

PostgreSQL将其WAL(预写日志)记录写入缓冲区,然后这些缓冲区被刷新到磁盘。缓冲区的默认大小(由wal_buffers定义)为16MB,但如果您有多个并发连接,则更高的值可以提供更好的性能。

effective_cache_size

effective_cache_size参数提供了磁盘缓存可用存储器的估计值。它只是一个指南,而不是确切的分配内存或缓存大小。它不分配实际内存,而是告诉优化器内核中可用的缓存量。这是使用索引成本估计的一个因素;值越高,使用索引扫描的可能性越大,而值越低,使用顺序扫描的可能性越大。如果值设置得太低,查询规划器可以决定不使用某些索引,即使它们会有帮助。还应该考虑不同表上并发查询的预期数量,因为它们必须共享可用空间。因此,设置一个大的值总是有益的。

让我们看看effective_cache_size的一些实际含义。<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921189.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wps的excel如何转为谷歌在线表格

1. 打开 Google Sheets&#xff08;sheets.google.com&#xff09;。 2. 新建一个空白表格。3. 点击菜单 文件 → 导入 (File → Import)。4. 选择在 WPS 保存好的 .xlsx 文件上传。5. 选择 “新建表格” 或 “替换当前表格”&#xff0c;就能直接在 Google Sheets 使用注…

猫头虎AI 荐研|腾讯开源长篇叙事音频生成模型 AudioStory:统一模型,让 AI 会讲故事

&#x1f42f;猫头虎荐研&#xff5c;腾讯开源长篇叙事音频生成模型 AudioStory&#xff1a;统一模型&#xff0c;让 AI 会讲故事 大家好&#xff0c;我是猫头虎 &#x1f42f;&#x1f989;&#xff0c;又来给大家推荐新鲜出炉的 AI 开源项目&#xff01; 这次要聊的是腾讯 A…

收藏!VSCode 开发者工具快捷键大全

一、文件操作快捷键1. 打开与关闭文件Ctrl O&#xff08;Windows/Linux&#xff09;或 Command O&#xff08;Mac&#xff09;&#xff1a;打开文件&#xff0c;可以通过输入文件名快速查找并打开相应文件。Ctrl W&#xff08;Windows/Linux&#xff09;或 Command W&#…

Simulations RL 平台学习笔记

1. 选择标准 1.1 开源项目&#xff0c;&#x1f31f;star数量越多越好 2. 常见平台 2.1 &#x1f31f;18.6k ML-Agents&#xff1a;基于Unity实现 2.2 &#x1f31f;1.2k Godot RL Agents

【国内电子数据取证厂商龙信科技】IOS 逆向脱壳

我们都知道&#xff0c;大多数的 APP 在开发的时候一般都会加上一层壳&#xff0c;例如 爱加密、梆梆、360、网易易盾等等。那 APK 的脱壳我们见得多了&#xff0c;那 IOS 逆向脱壳又是怎样子的呢&#xff1f;首先咱们先了解一下为什么要砸壳&#xff0c;因为 IOS 开发者开发软…

基于STM32单片机温湿度PM2.5粉尘甲醛环境质量wifi手机APP监测系统

1 基于STM32单片机温湿度PM2.5粉尘甲醛环境质量WiFi手机APP监测系统 本系统旨在实现对环境中温度、湿度、PM2.5粉尘浓度以及甲醛浓度的实时监测&#xff0c;并通过WiFi技术将数据传输至手机APP端&#xff0c;实现移动化与可视化的环境质量检测。系统在硬件上主要依赖STM32单片…

用C++实现日期类

在上学的时候&#xff0c;总是在计算还有多少天放假&#xff1b;在上班的时候&#xff0c;总是在计算还有多久发工资&#xff1f;我们一般通过日历得到结果&#xff0c;那自己能不能实现一些基本的功能呢&#xff1f;答案是可以的&#xff01;需要实现内容&#xff1a;1. 日期加…

百度网盘基于Flink的实时计算实践

01 概览 随着数字化转型的来临&#xff0c;企业对于数据服务的实时化需求日益增长&#xff0c;在大规模数据和复杂场景的情况下&#xff0c;Flink在实时计算数据链路中扮演着极为重要的角色&#xff0c;本文介绍了网盘如何通过 Flink 构建实时计算引擎&#xff0c;从而提供高性…

【CMake】策略

目录 一.CMake策略简要理解 1.1.第一阶段&#xff1a;童年时期&#xff08;旧行为&#xff0c;The "Old Way"&#xff09; 1.2.第二阶段&#xff1a;成长与改进&#xff08;引入新行为&#xff0c;The "New Way"&#xff09; 1.3.第三阶段&#xff1a;…

LLM中的function call

1. 概念 **Function Call&#xff08;函数调用&#xff09;**是指在编程中&#xff0c;程序可以通过调用预定义的函数来执行特定的操作。在LLM中&#xff0c;函数调用的概念扩展了模型的能力&#xff0c;使其不仅能够生成文本&#xff0c;还能与外部系统进行交互。通过函数调用…

【系统架构设计(13)】项目管理上:盈亏平衡分析与进度管理

文章目录零、核心思想&#xff1a;经济性与时效性的动态平衡一、盈亏平衡分析&#xff1a;项目的经济生命线1、核心公式与决策逻辑二、进度管理&#xff1a;项目的时效生命线1. **工作分解结构&#xff08;WBS&#xff09;**2. 进度管理流程3、关键路径法关键路径法&#xff08…

【SuperSocket 】利用 TaskCompletionSource 在 SuperSocket 中实现跨模块异步处理客户端消息

利用 TaskCompletionSource 在 SuperSocket 中实现跨模块异步处理客户端消息 在使用 SuperSocket 构建 TCP 服务时&#xff0c;我们经常会遇到这样的需求&#xff1a; 服务端接收到客户端数据后&#xff0c;需要将数据交给其他模块处理处理完成后再将结果返回给调用模块或客户端…

《IC验证必看|semaphore与mailbox的核心区别》

月薪30K验证工程师必答&#xff1a;SystemVerilog中semaphore与mailbox的核心区别&#xff0c;及必须用semaphore的场景深度解析 在验证工程师的技能体系里&#xff0c;线程同步与资源管控是区分“基础会用”&#xff08;20K水平&#xff09;和“精通工程化”&#xff08;30K水…

Spring线程池ThreadPoolTaskExecutor‌详解

ThreadPoolTaskExecutor‌写法Bean(name "taskExecutor") public ThreadPoolTaskExecutor taskExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(8); // 8核CPU服务器建议值executor.setMaxPoolSize(…

Unity之安装教学

UnityHub下载 下载官网地址&#xff1a;Unity Hub下载地址 打开网址右上角&#xff0c;登录/注册账号 登录完毕后&#xff0c;点击下载 安装Unity Hub 双击傻瓜式安装 安装完成 启动UnityHub 双击启动 左上角设置 设置中文 左上角登录账号 添加免费许可证 设置-许可证-添加 安装…

Redis 集群模式与高可用机制

最近在准备面试&#xff0c;正把平时积累的笔记、项目中遇到的问题与解决方案、对核心原理的理解&#xff0c;以及高频业务场景的应对策略系统梳理一遍&#xff0c;既能加深记忆&#xff0c;也能让知识体系更扎实&#xff0c;供大家参考&#xff0c;欢迎讨论。在分布式环境下&a…

Flutter + Web:深度解析双向通信的混合应用开发实践

Flutter Web&#xff1a;深度解析双向通信的混合应用开发实践 前言 在当今快速发展的移动应用开发领域&#xff0c;开发者们始终在寻求一种能够平衡开发效率、跨平台能力和用户体验的完美方案。原生开发性能卓越&#xff0c;但双平台&#xff08;iOS/Android&#xff09;开发…

如何查看Linux系统中文件夹或文件的大小

在日常运维和开发工作中&#xff0c;了解文件夹和文件占用的磁盘空间是非常重要的。尤其是当你在服务器上部署应用&#xff08;如 Jenkins&#xff09;时&#xff0c;合理监控磁盘使用情况可以避免磁盘空间不足导致的各种问题。在 Linux 系统中&#xff0c;我们可以使用一些简单…

豪华酒店品牌自营APP差异对比分析到产品重构

一、万豪国际集团旗下豪华酒店品牌及统一APP 万豪旗下奢华品牌均整合于 「万豪旅享家(Marriott Bonvoy)」APP,会员可通过该平台预订、管理积分及享受跨品牌服务。以下为核心豪华品牌: 1. 经典奢华品牌 丽思卡尔顿酒店(The Ritz-Carlton) 定位:顶级奢华,以管家服务、历…

ESLint 相关

no-unused-vars 等常见报错提醒关闭 1. no-unused-vars 报错示例&#xff1a; useMemo is defined but never used no-unused-vars解决方式 方法一&#xff1a;局部禁用某一行 // eslint-disable-next-line no-unused-vars const result useMemo(() > {}, []);方法二&…