建设网站代码重庆市建设考试报名网站

bicheng/2026/1/23 22:13:35/文章来源:
建设网站代码,重庆市建设考试报名网站,洛可可设计公司招聘,河北百度seo点击软件我们之前的博客文章“我们最讨厌的 PostgreSQL 部分”讨论了大家最喜欢的 DBMS 多版本并发控制 (MVCC) 实现所带来的问题。其中包括版本复制、表膨胀、索引维护和真空管理。本文将探讨针对每个问题优化 PostgreSQL 的方法。 尽管 PostgreSQL 的 MVCC 实现是 Oracle 和 MySQL 等…我们之前的博客文章“我们最讨厌的 PostgreSQL 部分”讨论了大家最喜欢的 DBMS 多版本并发控制 (MVCC) 实现所带来的问题。其中包括版本复制、表膨胀、索引维护和真空管理。本文将探讨针对每个问题优化 PostgreSQL 的方法。 尽管 PostgreSQL 的 MVCC 实现是 Oracle 和 MySQL 等其他广泛使用的数据库中最差的但它仍然是我们最喜欢的 DBMS而且我们仍然喜欢它通过分享我们的见解我们希望帮助用户释放这个强大的数据库系统的全部潜力。好消息是 OtterTune 会自动为您解决许多此类问题但不是全部。 问题#1版本复制 当查询修改元组时无论更新其一列还是所有列PostgreSQL 都会通过复制其所有列来创建新版本。这种复制可能会导致大量数据重复并增加存储需求特别是对于具有许多列和较大行大小的表。 优化不幸的是如果不对 PostgreSQL 的内部结构进行重大重写这会造成破坏就没有解决此问题的解决方法。这不像在情景喜剧中替换了一个没有人注意到的角色。正如我们在上一篇文章中提到的EnterpriseDB 在 2013 年通过 zheap 项目开始了这条道路但该项目的最后一次更新是在 2021 年。其他人已经对 PostgreSQL 代码进行了硬分叉以取代其 MVCC 实现。著名的例子包括 OrioleDB 和 YugabyteDB。但对这些系统的更改永远不会合并回主 PostgreSQL 代码库。所以我们暂时只能使用 PostgreSQL 的append-only MVCC。 Problem #2: Table Bloat 问题#2表膨胀 PostgreSQL 将过期版本死元组和活动元组存储在同一页面上。尽管 PostgreSQL 的 autovacuum 工作程序最终会删除这些死元组但写入繁重的工作负载可能会导致它们累积的速度快于真空处理的速度。此外自动清理仅删除死元组以供重用例如存储新版本并且不会回收未使用的存储空间。在查询执行期间PostgreSQL 将死元组加载到内存中因为 DBMS 将它们与活元组混合在页面上从而增加磁盘 IO 并损害性能因为 DBMS 检索无用的数据。如果您正在运行 Amazon 的 PostgreSQL Aurora这将增加 DBMS 的 IOPS并导致您给 Jeff Bezos(amazon的老板) 更多的钱 优化我们建议监控 PostgreSQL 的表膨胀然后定期回收未使用的空间。 内置pgstattuple模块可以准确计算数据库中的可用空间但它需要全表扫描这对于生产环境中的大表来说不实用。 $ psql -c CREATE EXTENSION pgstattuple -d $DB_NAME $ psql -c SELECT * FROM pgstattuple($TABLE_NAME) -d $DB_NAME或者可以使用一次性查询或脚本来估计表的未使用空间它们比 pgstattuple 更快、更轻量因为它们提供了表膨胀的粗略估计。如果未使用的空间量很大则 pg_repack 扩展会从臃肿的表和索引中删除并回收页面。它在线工作不需要在处理过程中对表进行独占锁定与 VACUUM FULL 不同。 以下命令将把 pg_repack 扩展安装到自我管理的 DBMS 中请参阅 Amazon 的 PostgreSQL RDS 说明然后压缩单个表。 $ psql -c CREATE EXTENSION pg_repack -d $DB_NAME $ pg_repack -d $DB_NAME --table $TABLE_NAME为了最大限度地减少对数据库性能的潜在影响OtterTune 建议我们的客户在流量较低的非高峰时段启动此过程。 问题#3二级索引维护 当应用程序对表执行 UPDATE 查询时PostgreSQL 还必须更新该表的所有索引以将条目添加到新版本。这些索引更新增加了 DBMS 的内存压力和磁盘 I/O特别是对于具有大量索引的表一位 OtterTune 客户在单个表上有 90 个索引。随着表中索引数量的增加更新元组时产生的开销也会增加。 PostgreSQL 避免更新仅堆元组 (HOT) 更新的索引其中 DBMS 将新版本存储在与先前版本相同的页面上。但正如我们在上一篇文章中提到的OtterTune 客户的 PostgreSQL 数据库仅对 46% 的更新操作使用 HOT 优化。 优化减少 PostgreSQL 索引写入放大的明显解决方法是减少每个表的索引数量。但这说起来容易做起来难。我们建议从表中重复和未使用的索引开始。人们可以通过检查数据库的模式来识别重复索引以查看两个索引是否以相同的顺序引用相同的列并使用相同的数据结构例如B树与哈希表。对于未使用的索引PostgreSQL 维护索引级指标例如pg_stat_all_indexes.idx_scan用于跟踪在索引上启动的索引扫描的数量。如果索引的该值为零则所有应用程序的查询都不会使用该索引。确保忽略未使用的主键或唯一索引因为 DBMS 使用它们对表强制执行完整性约束。 下面的屏幕截图显示了 OtterTune 的类似检查用于自动查找不必要的索引。 OtterTune’s Unused and Duplicate index dashboard. OtterTune 的未使用和重复索引仪表板。 一旦确定要删除的索引下一步就是删除它们。但是如果您的应用程序使用对象关系映射 (ORM) 框架来管理其数据库架构那么您不希望手动删除索引因为 ORM 可能会在将来的架构迁移期间重新创建索引。在这种情况下有必要更新应用程序代码中的架构。如果应用程序未使用 ORM则可以使用 DROP INDEX 命令。 问题#4真空管理 PostgreSQL 的性能在很大程度上取决于其 autovacuum 清理过时数据和修剪 MVCC 方案中版本链的有效性。然而由于其复杂性配置自动清理以正确运行并及时删除这些数据具有挑战性。默认的全局自动清理设置不适合大型表数百万到数十亿的元组因为触发清理可能需要很长时间。此外如果每个 autovacuum 调用需要很长时间才能完成或被长时间运行的事务阻塞DBMS 将积累死元组并遭受陈旧统计数据的影响。将自动清理延迟太久会导致查询随着时间的推移逐渐变慢需要手动干预来解决该问题。 优化虽然在 PostgreSQL 中清理表很痛苦但好消息是它是可以管理的。但正如我们现在所讨论的这有很多步骤并且需要跟踪很多信息。 控制 autovacuum 的第一步是监视每个表的死元组数量。 PostgreSQL 的  pg_stat_all_tables视图提供了监控表的基本指标包括死元组 ( n_dead_tup ) 和活动元组 ( n_live_tup ) 数量的估计。通过此类表级指标您可以确定每个表过期元组的百分比并确定哪些表需要额外的清理工作。 对于具有大量死元组的表您可以调整其设置以使 PostgreSQL 更频繁地触发 autovacuum。 PostgreSQL 允许您在表级别微调 autovacuum 参数不同的表可能需要不同的最佳设置。最重要的旋钮是 autovacuum_vacuum_scale_factor它指定在 PostgreSQL 调用 autovacuum 之前表中必须存在的死元组的最小百分比。该旋钮的默认值为 20%。如果应用程序的一个表有 10 亿个元组PostgreSQL 不会在该表上运行清理直到至少有 2 亿个死元组。如果该表中的平均元组大小为 1KB则 2 亿个死元组将消耗 200GB 的磁盘存储空间。这甚至不包括指向这些表的索引指针的额外存储开销为了避免此问题您应该使用 ALTER TABLE SQL 命令将大型表的比例因子旋钮设置为小于 20% ALTER TABLE table_name SET (autovacuum_ vacuum_scale_factor 0.05);接下来您应该检查 autovacuum 是否被长时间运行的事务阻塞。再次我们可以依靠 PostgreSQL 的内部遥测来获取这些信息。 pg_stat_activity 视图提供每个 PostgreSQL 工作线程即进程当前执行状态的实时数据。它显示每个活动事务已运行多长时间。如果事务已经运行了几个小时您应该考虑将其终止以便 autovacuum 可以完成其操作。下面的示例查询查找所有运行时间超过五分钟的事务 SELECT pid, NOW() - xact_start AS duration, query, stateFROM pg_stat_activityWHERE (NOW() - xact_start) INTERVAL 5 minutes;然后您可以使用 pg_cancel_backend 管理函数终止查询 SELECT pg_cancel_backend($PID_TO_KILL);当然在街上删除查询可能会产生意想不到的后果因此您必须确保杀死它们不会在您的应用程序中造成问题。为了避免将来出现同样的问题请确保事务的查询不必要地运行更长的时间因为它们使用的是低效的查询计划。请参阅我们之前关于优化查询性能的文章例如欺骗 ORDER BY...LIMIT 和运行 ANALYZE 了解如何使用 OtterTune 改善慢速查询。如果您不需要它们是原子的您还可以重构您的应用程序将大型事务分解为较小的工作单元但不可否认这并不总是容易做到。 最后您需要查看是否存在长时间运行的真空过程然后调整其他旋钮。与 pg_stat_activity 显示 PostgreSQL 工作线程的状态类似pg_stat_progress_vacuum 视图显示活动 autovacuum 操作的状态。通过此视图您可以确定真空是否需要几个小时甚至几天才能完成。如果您的 PostgreSQL DBMS 确实有长时间运行的 Vacuum那么 OtterTune 建议调整三个旋钮 autovacuum_work_mem 参数指定 DBMS 在每次 autovacuum 调用中可以使用的最大内存量。增加此参数可以加快清理速度因为它可以在每次调用时修剪更多的死元组。autovacuum_vacuum_cost_limit 参数控制在 PostgreSQL 强制自动清理工作者暂时退出之前可以产生多少 I/O 活动自动清理工作者。该旋钮的值越高意味着自动清理将更加积极。与这种基于成本的控制机制相关autovacuum_vacuum_cost_delay  参数确定 autovacuum 工作线程在 DBMS 强制其退出后必须等待多长时间。较短的延迟意味着自动清理每次都会更快地恢复操作。 原文地址

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

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

相关文章

设计本网站做返利网站能赚钱

glide性能优化实战 前言 项目使用glide加载图片之前也只是会基本api,这次项目有非常多的图片需要展示,而且设备是一个android12的版本,但是性能不太理想,分给APP的资源不太多,所以需要优化现有图片加载逻辑,读者可以…

涂料增稠剂移动网站建设公司食品网站策划

目录 序言向量的定义线性组合、张成空间与向量基线性变换和矩阵线性复合变换与矩阵乘法三维空间的线性变换行列式矩阵的秩和逆矩阵维度变换点乘叉乘基变换特征值和特征向量抽象向量空间 序言 欢迎阅读这篇关于线性代数的文章。在这里,我们将从一个全新的角度去探索线…

网站主页的要素深圳市罗湖区住房和建设局网站

hive管理之ctl方式 hivehive --service clictl命令行的命令 #清屏 Ctrl L #或者 ! clear #查看数据仓库中的表 show tabls; #查看数据仓库中的内置函数 show functions;#查看表的结构 desc表名 #查看hdfs上的文件 dfs -ls 目录 #执行操作系统的命令 !命令…

珠海网站建设在哪里网站能用到管理后台上吗

Transformer目录:《Transformer Paper》1.0 CV Transformer必读论文5篇_汉卿HanQ的博客-CSDN博客 前文参考:Transformer1.0-预热_汉卿HanQ的博客-CSDN博客 全文1w3字左右,按照论文翻译个人理解精读,如果对你有所帮助,欢迎点个赞哦&#xff…

做外贸的几个网站在线动画手机网站模板

目录 详解pytorch中各种Loss functions binary_cross_entropy 用途 用法 参数 数学理论 示例代码 binary_cross_entropy_with_logits 用途 用法 参数 数学理论 示例代码 poisson_nll_loss 用途 用法 参数 数学理论 示例代码 cosine_embedding_loss 用途 …

关键词搜索引擎工具爱站网络营销的主要特点有哪些

晚上学习,有台灯肯定比没台灯好。只要是盏合格的、能用的台灯,都能给你一个稳定又亮堂的环境。但是有些不合格的台灯会给眼睛带来伤害,尤其是学习负担比较重的学生。那有哪些台灯是学生用着比较好用的呢? 一、学生使用护眼台灯的…

网站建设推广软件有自己的网站如何做淘宝客

具体来说,OpenGL是一个开放的图形库,它规定了每个函数应该如何执行,以及它们的输出值,但没有具体实现。它提供了渲染2D和3D图形的标准或规范。 GLEW,全称OpenGL Extension Wrangler Library,是一个用于管理…

网站优化 方案如何做虚拟币交易网站

1、public —— 外部也能访问 2、private —— 只能内部(友元也可以) 3、explicit —— 只可用于声明単参构造函数。声明类的构造函数是显示调用,不是隐式。阻止调用构造函数时隐式转换(赋值初始化) 4、默认构造函数…

太原网站设计费用制作商城网站

下面是一个简单的 Python TCP 客户端示例代码,用于与之前提到的 EchoServer 进行通信: import socketserver_address (localhost, 8888)# 创建 TCP 客户端套接字 client_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)try:# 连接到服务器…

wordpress建站平台wordpress建设购物网站

众所周知&#xff0c;MySQL是非常重要的数据库语言&#xff0c;下面我们来回顾一下mysql的增删查改吧 MySQL创建数据库&#xff1a; CREATE DATABASE 数据库名;MySQL删除数据库&#xff1a; DROP DATABASE <database_name>; --直接删除&#xff0c;不检查是否存在 DROP…

拆分盘网站建设网站地图用法

前言&#xff1a; 小弟能力不足&#xff0c;认知有限&#xff0c;难免考虑不全面&#xff0c;希望大佬能给出更好的建议&#xff0c;指出存在的问题和不足&#xff0c;在此跪谢。 IO发展史 Java中对于I/O能力的支持主要分为三个比较关键的阶段&#xff1a; BIO 第一个阶段…

企业网站建设 全包吉林省城乡建设厅网站6

关于串的相关定义&#xff1a; 串&#xff1a;用‘ ’表示的字符序列空串&#xff1a;包含零个字符的串子串&#xff1a;包含传本身和空串的子串 eg: abc(,a,b,c,ab,bc,ac,abc)共7个&#xff1a;串的长度的阶乘1&#xff08;空串&#xff09;真子串&#xff1a;不包含自身的所…

萧山建设局网站线上问诊网站建设

前言 最近对部分项目升级了vue-cli脚手架&#xff0c;记录一下 问题一&#xff1a; scss/less/css中无法引入public下的静态资源 问题描述 在样式文件中使用静态资源路径导致编译无法通过 错误信息如下&#xff1a; Module not found: Error: Cant resolve /img/login/lo…

优酷wordpress建站教程杭州设计公司老板被点火

题目 105. 从前序与中序遍历序列构造二叉树 分析 这道题是告诉我们一颗二叉树的前序和中序&#xff0c;让我们根据前序和中序构造出整颗二叉树。 拿到这道题&#xff0c;我们首先要知道前序的中序又怎样的性质&#xff1a; 前序&#xff1a;【根 左 右】中序&#xff1a;…

快速建站教程如何建设运输网站

【嵌入式——QT】全局定义 概念数据类型定义函数宏定义 概念 头文件包含了Qt类库的一些全局定义&#xff0c;包含基本数据类型、函数和宏&#xff0c;一般的Qt类的头文件都会包含该文件&#xff0c;所以不用显示包含这个头文件也可以使用其中的定义。 数据类型定义 数据类型…

html5风格网站特色瑞安门户网站建设

可能你对值类型和引用类型还不太了解。 值类型和引用类型&#xff0c;是c#比较基础&#xff0c;也必须掌握的知识点&#xff0c;但是也不是那么轻易就能掌握&#xff0c;今天跟着我一起来看看吧。 典型类型 首先我们看看这两种不同的类型有哪些比较典型的代表。 典型值类型…

福州建设高端网站wordpress文本地化

文章目录 文章专栏前言文章解读前言创建ROI案例1&#xff1a;直接截取ROI手动截取ROI 总结ROI套路获取窗口句柄截取ROI区域获取有效区域 Stop组合 文章专栏 Halcon开发 Halcon学习 练习项目gitee仓库 CSDN Major 博主Halcon文章推荐 前言 今天来看第三章内容&#xff0c;既然是…

阳江市建设网站百度怎么推广自己的产品

二叉树的存储与遍历 const int N 1e6 10;// 二叉树的存储,l数组为左节点,r数组为右结点 int l[N], r[N]; // 存储节点的数据 char w[N]; // 节点的下标指针 int idx 0;// 先序创建 int pre_create(int n) {cin >> w[n];if (w[n] #) return -1;l[n] pre_create(idx)…

wordpress单本小说站机加工接单什么平台好

面试题45&#xff1a;C中的字符串如何存储 在C中&#xff0c;字符串可以通过多种方式存储&#xff0c;但最常见和推荐使用的方式是通过 std::string 类&#xff0c;该类位于 <string> 头文件中。std::string 是一个类模板的实例&#xff0c;通常用于存储字符数组&#x…

做网站的知名品牌公司网页设计建网站

PHP加密解密也是常有的事&#xff0c;发现discuz论坛里的PHP加密解密处理类代码&#xff0c;感觉挺不错&#xff0c;在用的时候&#xff0c;要参考Discuz论坛的passport相关函数&#xff0c;后面我会附上使用方法。php加密解密处理类<?php /* 文件名称&#xff1a;cls.sys_…