热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

并行查询sql优化

max_worker_processes:设置整个数据库实例层面允许支持的最大后台工作进程数,默认值为8。调整此参数需要重启数据库。数据库的一些系统进程

max_worker_processes:设置整个数据库实例层面允许支持的最大后台工作进程数,默认值为8。调整此参数需要重启数据库。数据库的一些系统进程如SysLogger、Bgwriter、WaLWriter、Pgarch、AutoVacuum、PgStat并不包含在这个参数控制的进程数内,即这些系统进程不是后台工作进程。而一些第三方插件产生的后台进程和并行的工作进程都算是后台工作进程,受这个参数的限制。


max_parallel_workers:设置整个数据库实例层面允许用做并行的后台工作进程数。修改无须重启机器。默认值为8。若此参数设置为比max_worker_processes高则无效。


max_parallel_workers_per_gather:设置某个并行操作允许并行度。修改无须重启机器。默认值为2。如果设置为0表示关闭并行查询。此参数比max_parallel_workers高则无效。一般设置为max_worker_processes>=max_parallel_workers>=max_parallel_workers_per_gather。

当设置max_parallel_workers_per_gather=2时,实际执行 597556.456 ms

postgres=# EXPLAIN ANALYZE SELECT id, name FROM people_warm ORDER BY id;QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------Gather Merge (cost=5019047.44..9880499.52 rows=41666680 width=37) (actual time=567717.158..594007.752 rows=50000000 loops=1)Workers Planned: 2Workers Launched: 2-> Sort (cost=5018047.42..5070130.77 rows=20833340 width=37) (actual time=566715.013..570783.692 rows=16666667 loops=3)Sort Key: idSort Method: external merge Disk: 767080kBWorker 0: Sort Method: external merge Disk: 765288kBWorker 1: Sort Method: external merge Disk: 767304kB-> Parallel Seq Scan on people_warm (cost=0.00..776515.40 rows=20833340 width=37) (actual time=0.055..383585.941 rows=16666667 loops=3)Planning Time: 0.047 msExecution Time: 597556.456 ms

当设置max_parallel_workers_per_gather=5时,实际执行60948.152 ms,提高了将近10倍。

postgres=# set max_parallel_workers_per_gather=5;
SET
postgres=# EXPLAIN ANALYZE SELECT id, name FROM people_warm ORDER BY id;QUERY PLAN --------------------------------------------------------------------------------------------------------------------------------------------
-----Gather Merge (cost=2378731.91..8424972.54 rows=50000000 width=37) (actual time=33153.631..57510.906 rows=50000000 loops=1)Workers Planned: 5Workers Launched: 5-> Sort (cost=2377731.83..2402731.83 rows=10000000 width=37) (actual time=32014.067..34372.589 rows=8333333 loops=6)Sort Key: idSort Method: external merge Disk: 382696kBWorker 0: Sort Method: external merge Disk: 377376kBWorker 1: Sort Method: external merge Disk: 363088kBWorker 2: Sort Method: external merge Disk: 396384kBWorker 3: Sort Method: external merge Disk: 390440kBWorker 4: Sort Method: external merge Disk: 389736kB-> Parallel Seq Scan on people_warm (cost=0.00..668182.00 rows=10000000 width=37) (actual time=0.138..18433.465 rows=8333333 loop
s=6)Planning Time: 0.059 msExecution Time: 60948.152 ms

加完索引之后查询

postgres=# EXPLAIN ANALYZE SELECT id, name FROM people_warm ORDER BY id;QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------Index Scan using id_idx on people_warm (cost=0.56..1895871.62 rows=50000000 width=37) (actual time=0.082..9285.344 rows=50000000 loops=1)Planning Time: 0.086 msExecution Time: 10571.772 ms


推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • NotSupportedException无法将类型“System.DateTime”强制转换为类型“System.Object”
    本文介绍了在使用LINQ to Entities时出现的NotSupportedException异常,该异常是由于无法将类型“System.DateTime”强制转换为类型“System.Object”所导致的。同时还介绍了相关的错误信息和解决方法。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • ihaveusedthedelphidatabindingwizardwithmyxmlfile,andeverythingcompilesandrunsfine. ... [详细]
author-avatar
手机用户2702936061
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有