Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PostgreSQL:在没有硬件瓶颈的情况下多个运行函数的性能下降

PostgreSQL:在没有硬件瓶颈的情况下多个运行函数的性能下降
EN

Stack Overflow用户
提问于 2020-01-21 10:11:36
回答 1查看 259关注 0票数 0

我有一个简单的函数,如果我运行它,大约需要40秒才能完成。

代码语言:javascript
运行
AI代码解释
复制
select * from f_cyklus1(100000000) 

但是如果我在8个分离的实例中运行这个函数8次,这意味着所有的8个函数都是并行运行的,每个实例都需要210到260秒才能完成。这是一个大幅度下降的表现。我试着把它编译成8个单独的函数,然后再运行一次,但是性能没有变化。

代码语言:javascript
运行
AI代码解释
复制
select * from f_cyklus1(100000000); 
select * from f_cyklus2(100000000); 
select * from f_cyklus3(100000000); 
select * from f_cyklus4(100000000); 
select * from f_cyklus5(100000000); 
select * from f_cyklus6(100000000); 
select * from f_cyklus7(100000000); 
select * from f_cyklus8(100000000); 

那么为什么要花40多岁,而不是210-260年才能完成呢?我们的虚拟机有16个CPU,物理硬件使用率很低。在测试时,我也是唯一使用Postgre数据库的人。

代码语言:javascript
运行
AI代码解释
复制
create or replace function f_cyklus1 (p_rozsah int) returns bigint as -- drop function f_cyklus(int)
$body$
declare 

declare 
  v_exc_context        TEXT;
  v_result             INTEGER;

  p_soucet bigint :=0;
begin

for i in 0..p_rozsah
loop
p_soucet = p_soucet + i;
end loop;

return p_soucet;

EXCEPTION
  WHEN OTHERS THEN
    GET STACKED DIAGNOSTICS v_exc_context = PG_EXCEPTION_CONTEXT;
    PERFORM main.ut_log('ERR', SQLERRM || ' [SQL State: ' || SQLSTATE || '] Context: ' || v_exc_context );
    RAISE;
END;
$body$ LANGUAGE plpgsql

PostgreSQL 11.6 on x86_64-pc-linux-gnu,由gcc (GCC) 4.8.5 20150623 (RedHat4.8.5-39),64位编译

虚拟机: Centos 7+ KVM

HW: 2x AMD EPYC 7351 + 256 GB RAM

注意:我已经问过类似的问题,我认为这是由于异步处理,但这表明问题实际上是在原始Postgres性能,因此我删除了我的前一个问题,并问了这个新的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-22 08:53:55

p_soucet = p_soucet + i;

每次这样做,它都必须获得一个运行语句的“快照”,因为它在幕后使用常规SQL引擎,并且总是需要在快照中运行。获取快照需要系统范围内的锁定。同时运行的进程越多,它们花更多的时间来获取快照,而不是做有用的工作。

如果您在设置为“可重复读取”的事务中运行该函数,您会发现它们的扩展性更好,因为它们在持续时间内保持相同的快照,并保持重复使用它。当然,这可能会干扰您的实际用例。

plpgsql实际上并不适合于这类工作,只需进行扩展。您可以使用其他pl语言之一,如plperl或plpythonu。

https://www.postgresql.org/docs/current/plpgsql-expressions.html中描述了主SQL引擎如何计算表达式。

快照通常从https://www.postgresql.org/docs/current/mvcc.html开始在文档中进行讨论。

我不知道这两者之间的交互被记录在任何地方,供最终用户使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59846912

复制
相关文章
5个容易忽视的PostgreSQL查询性能瓶颈
PostgreSQL 查询计划器充满了惊喜,因此编写高性能查询的常识性方法有时会产生误导。在这篇博文中,我将描述借助 EXPLAIN ANALYZE 和 Postgres 元数据分析优化看似显而易见的查询的示例。
PGCCC
2022/02/11
3.6K1
5个容易忽视的PostgreSQL查询性能瓶颈
PostgreSQL创建临时表性能下降分析
环境信息 PostgreSQL 11.5 问题 客户反馈临时表创建耗时较长,平均耗时在5ms以上,相对于之前测试阶段的创建时间有明显变慢。 根本原因 postgresql在创建表时,会预估当前表是否存在超长记录的可能,如果使用了text,varchar(555)等超大字端,会在创建表同时创建toast表及toast索引表,同时多字段会写入系统表记录,这将增大创建表的开销。 诊断步骤 psql postgres=# select count(*) from pg_class; count -------
忽而呀嘿
2020/06/08
2.6K0
Chrome 运行时性能瓶颈分析
谷歌性能测试地址 https://googlechrome.github.io/devtools-samples/jank/ 可以看到如下的页面:
ConardLi
2020/05/07
1.6K0
在Load average 高的情况下如何鉴别系统瓶颈
在Load average 高的情况下如何鉴别系统瓶颈。是CPU不足,还是io不够快造成? 或是内存不足? 一:查看系统负载vmstat procs -----------memory---------- -----swap-- -------io---- --system-- ------cpu------- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 49605
小小科
2018/05/02
8680
谷歌AI在没有语言模型的情况下,实现了最高性能的语音识别
谷歌AI研究人员正在将计算机视觉应用于声波视觉效果,从而在不使用语言模型的情况下实现最先进的语音识别性能。
AiTechYun
2019/05/13
9810
谷歌AI在没有语言模型的情况下,实现了最高性能的语音识别
HashMap的性能瓶颈
今天问到了 HashMap 没回答好 再总结一下 只总结我没有注意的部分 并不完整
韩旭051
2021/04/14
7300
没有性能瓶颈的无限级菜单树应该这样设计
以一门网络课程为例,我们设计一个课程的关系结构。比如,我们有Java入门课程、人工智能课程、Java设计模式、源码分析、软技能等,而Java设计模式、源码分析、软技能又属于Java架构师系列课程包,每个课程的定价都不一样。但是,这些课程不论怎么组合,都有一些共性,而且是整体和部分的关系,可以用组合模式来设计。首先创建一个顶层的抽象组件CourseComponent类。
Tom弹架构
2021/11/04
6550
在没有 Mimikatz 的情况下操作用户密码
通过利用Mimikatz的 lsadump::setntlm和lsadump::changentlm函数,过去已经涵盖了这两个用例。虽然Mimikatz是最好的攻击工具之一,但我会尽量避免使用它,因为它是反病毒和 EDR 工具的高度目标。在这篇文章中,我将专门讨论用例 #2 — 为横向移动或权限提升重置密码。
Khan安全团队
2022/03/21
2.2K0
V-3-3 在没有vCenter的情况下
在使用vSphere客户端登陆到ESXi服务器的时候,由于没有安装vCenter,而发现无法克隆虚拟机。而如果要安装vCenter的Windows版,有时候需要创建多台Windows Server主机,这种时候可以通过复制ESXi datastore里的虚拟机文件来创建多台相同的Windows Server虚拟机。
py3study
2020/01/07
1.1K0
没有性能瓶颈的无限极菜单树应该这样设计
以一门网络课程为例,我们设计一个课程的关系结构。比如,我们有Java入门课程、人工智能课程、Java设计模式、源码分析、软技能等,而Java设计模式、源码分析、软技能又属于Java架构师系列课程包,每个课程的定价都不一样。但是,这些课程不论怎么组合,都有一些共性,而且是整体和部分的关系,可以用组合模式来设计。首先创建一个顶层的抽象组件CourseComponent类。
Tom弹架构
2021/12/21
5920
没有性能瓶颈的无限极菜单树应该这样设计
没有硬件,也可以运行与测试 TFLite 应用
提到人工智能和机器学习(Marchine Learning,ML),你的脑海里是否立即会浮现计算中心、高端 GPU、成百上千的 TPU 等等。实际上,随着嵌入式设备、移动终端以及近年来物联网(Internet of Things,IoT)的发展,人工智能离我们越来越近。手机、智能音箱、电话手表,甚至控制开关,都配备有一定的人工智能。特别是物联网和智能家居的快速发展,机器学习在微型低功耗设备上应用得越来越广泛。
云水木石
2020/06/24
1.4K0
性能测试中会遇到的瓶颈
性能测试这种测试方式在发生过程中,其中一个过渡性的工作,就是对执行过程中的问题,进行定位,对功能的定位,对负载的定位,最重要的,当然就是问题中说的“瓶颈”,接触性能测试不深,更非专家,自己的理解,瓶颈产生在以下几方面:
顾翔
2020/09/04
1.9K0
在Docker中运行PostgreSQL + pgAdmin 4
默认username是postgres,password是上面设置的pg123456 注意,因为pgadmin运行在docker里,所以host不能写localhost。host.docker.internal代表宿主机器,或者用宿主机IP。
xhznl
2020/08/14
7.4K1
JPEG 在 GPU 上压缩性能瓶颈分析
目前市面主流用于服务器进行计算的Tesla系列GPU,主要有K80,P4,P40,P100,M40,这些卡性能指标有着不同差异导致成本上也相差很多。 鉴于AI是当下最火的技术方向,GPU加速运算在这方
杨清华
2017/07/31
5.1K0
JPEG 在 GPU 上压缩性能瓶颈分析
解决Flink流式任务的性能瓶颈
⚜ 2016年8月,我有机会在斯坦福大学小住,与朋友在计算机学院William Gates大楼讨论问题,忽然发现了Donald Knuth的办公室,于是拍下了这张照片
张逸
2023/03/23
9460
解决Flink流式任务的性能瓶颈
解Bug之路-NAT引发的性能瓶颈解Bug之路-NAT引发的性能瓶颈总结
笔者最近解决了一个非常曲折的问题,从抓包开始一路排查到不同内核版本间的细微差异,最后才完美解释了所有的现象。在这里将整个过程写成博文记录下来,希望能够对读者有所帮助。(篇幅可能会有点长,耐心看完,绝对物有所值~)
无毁的湖光-Al
2020/11/12
1.1K0
解Bug之路-NAT引发的性能瓶颈解Bug之路-NAT引发的性能瓶颈总结
如何排查系统的性能瓶颈点?
作者 | 朱小厮的博客 来源 | https://mp.weixin.qq.com/s/ZpqMN7og73IVC16WNF2G5A 梳理系统的性能瓶颈点这件事应该不是一件简单的事情,需要针对不同设计的系统来进行单独分析。 首先一套完整可用的系统应该是有ui界面的(这里强调的是一套完整的,可用的系统,而并不是指单独的一个中台系统),系统分为了前端模块和后端模块。 这里由于我个人的擅长领域更多是处于后端模块,所以对于系统的瓶颈点梳理我会从后端进行分析。 这里我结合常用的nginx+tomcat+redis+
程序猿DD
2023/04/04
4060
如何排查系统的性能瓶颈点?
混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...
今天在把以前写的代码生成工具从原来的.NET3.5升级到.NET4.0,同时准备进一步完善,将程序集都更新后,一运行程序在一处方法调用时报出了一个异常: 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集 其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的System.Data.Sqlit
hbbliyong
2018/03/05
2.3K0
常见的降维技术比较:能否在不丢失信息的情况下降低数据维度
本文将比较各种降维技术在机器学习任务中对表格数据的有效性。我们将降维方法应用于数据集,并通过回归和分类分析评估其有效性。我们将降维方法应用于从与不同领域相关的 UCI 中获取的各种数据集。总共选择了 15 个数据集,其中 7 个将用于回归,8 个用于分类。
deephub
2023/02/01
1.5K0
在没有数据的情况下使用贝叶斯定理设计知识驱动模型
数据是模型的基础,但是没有数据只有领域专家也可以很好地描述或甚至预测给定环境的“情况”。我将根据贝叶斯概率来总结知识驱动模型的概念,然后是一个实际教程,以演示将专家的知识转换为贝叶斯模型以进行推理的步骤。我将使用 Sprinkler 系统从概念上解释过程中的步骤:从知识到模型。最后我将讨论复杂的知识驱动模型的挑战,以及由于质疑和提取知识而可能发生的系统错误。所有示例都是使用 python 的 bnlearn 库创建的。
deephub
2021/10/09
2.2K0
在没有数据的情况下使用贝叶斯定理设计知识驱动模型

相似问题

运行web应用5天后性能下降,如何发现瓶颈?

81

迭代多个列表(性能没有下降)

13

PostgreSQL索引表性能突然下降

10

PostgreSQL自真空导致性能显著下降

14

Tensordot的性能瓶颈

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档