pg运维之REDUCE WAL BY INCREASING CHECKPOINT DISTANCE

如果你在生产中运行PostgreSQL,你可能已经注意到,调整检查点对调整服务器和提高数据库整体性能是一件非常有益的事情。然而,这里面还有更多的内容。增加检查点的距离也可以帮助实际减少首先创建的WAL的数量。这是对的。这不仅仅是一个性能问题,而且对创建的日志量也有影响。

Creating a test installation

设置参数

max_wal_size = 128MB
synchronous_commit = off

写入测试数据

% createdb test
% pgbench -s 100 -i test
dropping old tables...
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
creating tables...
generating data...
100000 of 10000000 tuples (1%) done (elapsed 0.13 s, remaining 12.90 s)
200000 of 10000000 tuples (2%) done (elapsed 0.28 s, remaining 13.79 s)
…
9700000 of 10000000 tuples (97%) done (elapsed 12.32 s, remaining 0.38 s)
9800000 of 10000000 tuples (98%) done (elapsed 12.46 s, remaining 0.25 s)
9900000 of 10000000 tuples (99%) done (elapsed 12.59 s, remaining 0.13 s)
10000000 of 10000000 tuples (100%) done (elapsed 12.68 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done.

running a PostgreSQL benchmark

现在让我们运行一个测试。我们想运行10×100万个交易。如果你想在你的数据库上重复测试,确保测试运行的时间足够长。让我们来看看这个测试!

% pgbench -c 10 -j 5 -t 1000000 test
starting vacuum...end.
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 100
query mode: simple
number of clients: 10
number of threads: 5
number of transactions per client: 1000000
number of transactions actually processed: 10000000/10000000
latency average = 0.730 ms
tps = 13699.655677 (including connections establishing)
tps = 13699.737288 (excluding connections establishing)

正如你所看到的,我们成功地运行了大约每秒13.700个交易(在我的个人笔记本电脑上)。让我们来看看创建的WAL的数量。

test=# SELECT pg_current_wal_insert_lsn();
pg_current_wal_insert_lsn
---------------------------
13/522921E8
(1 row)

计算出当前WAL位置的方法是调用pg_current_insert_lsn()函数。对于大多数人来说,这种格式可能是无法理解的,因此将该值转化为可读的数字比较容易。

test=# SELECT pg_size_pretty(pg_current_wal_insert_lsn() - '0/00000000'::pg_lsn);
pg_size_pretty
----------------
77 GB
(1 row)

Increasing checkpoint distances

设置参数

max_wal_size = 150GB
checkpoint_timeout = 1d
synchronous_commit = off
test=# SELECT pg_current_wal_insert_lsn();
pg_current_wal_insert_lsn
---------------------------
1/4F210328
(1 row)test=# SELECT pg_size_pretty(pg_current_wal_insert_lsn() - '0/00000000'::pg_lsn);
pg_size_pretty
----------------
5362 MB
(1 row)

仅仅产生了5.3G的wal

Understanding WAL creation

事务日志的想法是确保在系统崩溃的情况下能够很好地恢复。然而,PostgreSQL不能永远保留交易日志。检查点的目的是确保在WAL从磁盘上删除之前,所有数据在数据文件中是安全的。

技巧来了:如果一个区块在检查点之后第一次被修改,它必须被完全记录下来。整个区块将被写入WAL中。每一个额外的修改都不需要写入整个块–只需要记录修改的内容,当然,这要少得多。

这就是我们在这里看到的主要区别的原因。通过将检查点的距离增加到一个非常高的值,我们基本上将检查点减少到了绝对的最小值,这反过来又减少了 "第一个块 "的写入数量。

从长远来看,改变WAL设置不仅对性能有好处–它还会减少WAL的数量。

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

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

相关文章

nginx四层tcp负载均衡及主备、四层udp负载均衡及主备、7层http负载均衡及主备配置(wndows系统主备、负载均衡)

准备工作 服务器上安装、配置网络负载平衡管理器 windows服务器热备、负载均衡配置-CSDN博客 在windows服务器上安装vmware17 win10 上安装vmware17-CSDN博客 在windows上利用vmware17 搭建centos7 mini版 在windows上利用vmware17 搭建centos7 mini版本服务器-CSDN博客 …

机器学习和深度学习领域的算法和模型

机器学习和深度学习领域有许多算法和模型&#xff0c;以下是一些常见的算法和模型&#xff1a; 线性回归&#xff08;Linear Regression&#xff09;逻辑回归&#xff08;Logistic Regression&#xff09;决策树&#xff08;Decision Tree&#xff09;随机森林&#xff08;Ran…

设计模式-策略模式(Strategy)

设计模式-策略模式&#xff08;Strategy&#xff09; 一、策略模式概述1.1 什么是策略模式1.2 简单实现策略模式1.3 使用策略模式的注意事项 二、策略模式的用途三、策略模式实现方式3.1 简单策略模式3.2 组合策略模式3.3 动态策略模式 一、策略模式概述 1.1 什么是策略模式 …

225.用队列实现栈(LeetCode)

思路 思路&#xff1a;用两个队列实现栈后进先出的特性 &#xff0c;两个队列为空时&#xff0c;先将数据都导向其中一个队列。 当要模拟出栈时&#xff0c;将前面的元素都导入另一个空队列&#xff0c;再将最后一个元素移出队列 实现 实现&#xff1a; 因为C语言没有库可以…

std::map使用自定义的数据结构当做key

一、std::map是按照键的顺序进行排序的&#xff0c;因此需要定义结构类型的比较运算符。通常情况下&#xff0c;你可以通过重载结构类型的小于运算符<来定义比较逻辑。 #include <map>class CKey { public:CKey(int a) { m_a a; }~CKey() default;//也可以在外部(二…

【Linux篇】冯 诺依曼计算机结构体系

详解冯 诺伊曼体系 CPU : 运算器 && 控制器输入设备 : 话筒&#xff0c;摄像头&#xff0c;键盘&#xff0c;鼠标&#xff0c;磁盘&#xff0c;网卡等输出设备 : 显卡&#xff0c;声卡&#xff0c;网卡&#xff0c;磁盘&#xff0c;显示器&#xff0c;打印机等存储器 :…

中睿天下Coremail | 2023年Q3企业邮箱安全态势观察报告

10月25日&#xff0c;北京中睿天下信息技术有限公司联合Coremail邮件安全发布《2023年第三季度企业邮箱安全性研究报告》。2023年第三季度企业邮箱安全呈现出何种态势&#xff1f;作为邮箱管理员&#xff0c;我们又该如何做好防护&#xff1f; 以下为精华版阅读&#xff0c;如需…

景联文科技:驾驭数据浪潮,赋能AI产业——全球领先的数据标注解决方案供应商

根据IDC相关数据统计&#xff0c;全球数据量正在经历爆炸式增长&#xff0c;预计将从2016年的16.1ZB猛增至2025年的163ZB&#xff0c;其中大部分是非结构化数据&#xff0c;被直接利用&#xff0c;必须通过数据标注转化为AI可识别的格式&#xff0c;才能最大限度地发挥其应用价…

arcgis--浮点型栅格数据转整型

利用【Spatial Analyst工具】-【数学】-【转为整型】工具&#xff0c;将浮点型数据转为整型。如下&#xff1a; 【转为整型】对话框参数设计如下&#xff1a; 转换结果如下&#xff1a;

C_8练习题

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 编写C语言程序一般需经过的几个步骤依次是()。 A.编辑、调试、编译、连接 B.编辑、编译、连接、运行 C.编译、调试、编辑、连…

阿里云全球故障凸显“云集中”风险

阿里云12日发生的全球性故障再次将“云集中风险”推上风口浪尖。这一公有云史上罕见的事件不仅影响了数以万计的企业和服务&#xff0c;也引发了对云服务集中化趋势的深刻反思。 2023年11月12日17:44(GMT8)开始&#xff0c;阿里云基础设施发生严重故障&#xff0c;导致阿里巴巴…

【多线程 - 07、中断线程 interrupt】

中断线程 Thread类中interrupt()、interrupted()和isInterrupted()方法 interrupt()方法 其作用是中断此线程&#xff08;此线程不一定是当前线程&#xff0c;而是指调用该方法的Thread实例所代表的线程&#xff09;&#xff0c;但实际上只是给线程设置一个中断标志&#xff0c…

详解 KEIL C51 软件的使用·设置工程·编绎与连接程序

详解 KEIL C51 软件的使用建立工程-CSDN博客 2. 设置工程 (1)在图 2-15 的画面中点击 会弹出如图 2-16 的对话框.其中有 10 个选择页.选择“Target” 项,也就是图 2-16 的画面. 图 2-16 在图 2-16 中,箭头所指的是晶振的频率值,默认是所选单片机最高的可用频率值.该设置值与单…

uniapp运行到安卓模拟器一直在“同步手机端程序文件完成“界面解决办法

如果你是用的模拟器是android studio创建的模拟器&#xff0c;那么你需要新创建一个android11 x86架构的模拟器&#xff1a; 创建完成后&#xff0c;启动模拟器&#xff1a; 然后在hbuilder中重新运行到这个模拟器就可以了&#xff1a; 运行结果&#xff1a; 如果你是用安…

代码随想录Day45 动态规划13 LeetCode T1143最长公共子序列 T1135 不相交的线 T53最大子数组和

LeetCode T1143 最长公共子序列 题目链接:1143. 最长公共子序列 - 力扣&#xff08;LeetCode&#xff09; 题目思路: 动规五部曲分析 1.确定dp数组的含义 这里dp数组的含义是结尾分别为i-1,j-1的text1和text2的最长公共子序列长度 至于为什么是i-1,j-1我之前已经说过了,这里再…

网络运维Day16

文章目录 Docker简介什么是容器命名空间&#xff1a; Docker 的优缺点 Docker安装Docker镜像管理什么是镜像镜像管理 Docker容器管理运行容器容器启动、停止、重启拷贝文件进入容器容器与应用 DockerfileDockerfile 语法案例 总结 Docker简介 什么是容器 容器是用来装东西的&a…

CSS特效010:文字颜色渐变的流光效果

查看专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS相关的库、…

爱上C语言:整型和浮点型在内存中的存储(进制转换,原码,反码,补码以及大小端)

&#x1f680; 作者&#xff1a;阿辉不一般 &#x1f680; 你说呢&#xff1a;生活本来沉闷&#xff0c;但跑起来就有风 &#x1f680; 专栏&#xff1a;爱上C语言 &#x1f680;作图工具&#xff1a;draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话&#xff0c;还请…

揭秘Vue中的nextTick:异步更新队列背后的技术原理大揭秘!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、N…

go-bindata - embed结合嵌入静态文件打包可执行二进制文件

## embed 嵌入静态文件到可执行二进制文件 # 安装go-bindata go get -u github.com/jteeuwen/go-bindata/... # 打包静态文件 go-bindata web/... 执行次命令之后会在项目目录下生成bindata.go文件,示例命令中模板文件都在项目的web目录下 # 使用embed注册模板示例文档 http…