postgresql优化案例三:recheck cond

news2024/11/26 4:39:09

文章目录

  • 1.SQL语句
  • 2.查看改善前执行计划:
  • 3.解决方案
    • 3.1增加work_mem的size
    • 3.2.创建合适的索引
  • 4.改善后执行计划

1.SQL语句

delete from sap_dispatchingd_hist a
       where exists (select 1 
                       from sap_dispatchingm_hist b 
                      where a.ffact_no=b.ffact_no
                        and a.fsfc_no=b.fsfc_no
                        and b.fsfc_date <to_char(current_date -365,'yyyymmdd') );

2.查看改善前执行计划:

在这里插入图片描述
在上图执行计划中看到虽然pg选择使用bitmap的方式,同时使用了recheck cond,我们来看看recheck cond的定义:
It is a potential re-check of the condition that is not always performed.
Only if the bitmap is lossy (which EXPLAIN (ANALYZE) will indicate) the recheck is performed.
A bitmap index scan becomes lossy if work_mem is not big enough to contain a bitmap that contains one bit per table row. It will then degrade to one bit per 8K page. Rows from such blocks will have to be rechecked.
简单来说就是work_mem不足以放下bitmap時,會變為lossy模式,即從原來的每一行建立bit位变為每一頁建立bit位,這里的頁指包含匹配行的页

3.解决方案

3.1增加work_mem的size

默认是4MB,可以使用如下语句设定到期望的值,这里是设到64M

SET work_mem = 65536;

3.2.创建合适的索引

增加work_mem的size能够帮助解决问题,但是还是建议不要轻易使用,而应该首先优化sql或者索引,由于执行计划中使用的索引是idx_sap_dispatchingm_hist_01,我们看看这个索引的结构

relnamespace |               relname                |   attname   | attnum
--------------+--------------------------------------+-------------+--------
 wmspci_app   | idx_sap_dispatchingm_hist_01         | ffact_no    |      1
 wmspci_app   | idx_sap_dispatchingm_hist_01         | fsfc_no     |      2
 wmspci_app   | idx_sap_dispatchingm_hist_01         | fsfc_date   |      9

可以看到idx_sap_dispatchingm_hist_01索引是一个组合索引,由三个子段组成(ffact_no,fsfc_no,fsfc_date),但是执行计划建立bitmap时实际只是用了fsfc_date,因此,我们将只在这个字段建立索引,这样可以减少bitmap的大小

create index idx_sap_dispatchingm_hist_02 on sap_dispatchingm_hist(fsfc_date)

再来看看改善后执行计划

4.改善后执行计划

在这里插入图片描述
从上图可以看出,recheck cond已经消失.

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

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

相关文章

正确认识:DOTA-CH2-Alkynyl(HCl salt),螯合剂修饰肽,物理化学性质参数

1.试剂基团反应特点&#xff08;Reagent group reaction characteristics&#xff09;&#xff1a; DOTA-CH2-Alkynyl(HCl salt)使用有机溶剂或浓盐酸&#xff08;HCl&#xff09;&#xff0c;在酸化的环境中螯合剂修饰肽的主要优点是高效率和不存在有机溶剂。它可以应用于多种…

给清洁设备以“生命”,国邦从生产型制造走向服务型制造的转型之路|案例研究

国邦协同科技&#xff08;广州&#xff09;有限公司&#xff08;以下简称“国邦”&#xff09;成立于2011年&#xff0c;是行业领先的清洁解决方案服务商&#xff0c;致力于为客户提供全周期清洁解决方案&#xff0c;提高其清洁品质及效率。在2016年到2020年连续5年的时间里&am…

python 操作配置文件。

一&#xff1a;配置文件 1. 什么是配置文件 配置文件是为程序配置参数和初始设置的文件。一般为文本文件&#xff0c;以ini,conf,cnf,cfg,yaml等作为后缀名。 例如mysql的配置文件my.cnf内容如下&#xff1a; [mysqld] # Only allow connections from localhost bind-addre…

Java30天拿下---第三天(选择,循环,二重循环语句,输入,调试,标签)

Java30天拿下---第三天 一 流程图二 选择结构简单的if-else嵌套的if-else多重if的选择语句&#xff08;else-if&#xff09;switch语句 二 输入验证三 程序调试四 循环结构while循环do-while循环for循环流程控制二重循环&#xff08;重点&#xff09; 五 标签 label&#xff08…

中国移动云能力中心捐赠 secScanner 和 ksPack 项目,助力openEuler社区繁荣发展

2023 开放原子全球开源峰会于 6 月 11 日至 13 日在全球数字经济大会期间召开。本届大会以“开源赋能、普惠未来”为主题&#xff0c;全面展示开源技术应用&#xff0c;聚焦全球开源生态最新发展与前沿技术动态。中国移动云能力中心张胜举出席本次大会&#xff0c;并代表移动云…

618仿冒百出,如何保护品牌不受侵害|上云那些事

随着直播带货的兴起&#xff0c;如今的618&#xff0c;更多消费者选择在直播间下单。与传统电商不同的消费体验背后&#xff0c;是消费模式和销售渠道的改变&#xff0c;而与传统电商比较成熟的渠道风控相比&#xff0c;直播间则成为了不法分子潜伏的温床&#xff1a;大量号称“…

电能质量监测和分析仪器的设计与应用

安科瑞虞佳豪 随着电气环境中自动化程度的提高,以电力电子技术为代表的各种整流、逆变、变频等非线性负载比重不断变大,加之调控手段不完善及外来干扰等原因,使得电能质量下降。基于计算机、微处理器控制的电子仪器在国民经济企业中大量使用,对供电质量的敏感程度越来越高,对电…

Go语言精进之路读书笔记—第二章项目结构、代码风格与标识符命名

上面是go语言库项目结构&#xff0c;细节补充如下&#xff1a; cmd目录&#xff1a; 存放项目要构建的可执行文件对应的main包源文件。 pkg目录&#xff1a; 项目自身要使用并且同样也是可执行文件对应main包要依赖的库文件。 makefile&#xff1a; 代码任何第三方构建工具脚本…

二、Kibana简介与安装

目录 1、下载 2、安装 3、启动运行 4、访问http://localhost:5601 5、使用kibana工具查询elasticsearch 6、汉化kibana Kibana是一个开源的分析与可视化平台&#xff0c;设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana…

虹科教您 | 多功能时间敏感网络流量记录仪RELY-TSN-REC操作指南与基本功能测试

1. 设备描述 RELY-TSN-REC 是一款基于 RELYUM 灵活开放平台的强大网络流量记录器。 该设备可以使用 IEEE 802.1AS 通过连接到专用端口的外部主时钟进行同步&#xff0c;并为捕获的流量提供精确的时间戳。该设备可以安装在时间敏感网络(TSN)以太网网络中&#xff0c;并可以在TA…

VCL界面控件DevExpress VCL v23.1.3全新首发 - 支持Windows 11新主题

DevExpress VCL Controls是Devexpress公司旗下最老牌的用户界面套包&#xff0c;所包含的控件有&#xff1a;数据录入、图表、数据分析、导航、布局等。该控件能帮助您创建优异的用户体验&#xff0c;提供高影响力的业务解决方案&#xff0c;并利用您现有的VCL技能为未来构建下…

公开信发起人Tegmark:中国得天独厚,为AI安全和治理做贡献丨2023智源大会回顾...

导读 近日&#xff0c;MIT教授、「暂停大型AI实验」公开信的发起人之一Max Tegmark发表了题为「如何掌控 AI」的精彩演说&#xff0c;介绍了发展可控 AI 的重要意义&#xff0c;提出了通过「机械可解释性」实现可控 AI 的技术路线&#xff0c;同时也肯定了中国在 AI 安全领域的…

2自由度并联仿生腿的制作

1. 运动功能说明 本文实例将实现2自由度并联仿生腿模组运动起来&#xff0c;模拟实现狗腿行走的动作。 2. 结构说明 2自由度并联仿生腿模组是由两个舵机驱动的&#xff0c;它的所有动作都将在两个舵机的配合运动下实现。 3. 运动原理说明 2自由度并联仿生腿模组运动的点位如下…

【Vue】学习笔记-Vue UI组件库

学习笔记-Vue UI组件库 常用UI组件库移动端常用UI组件库PC端常用UI组件库element-ui 基本使用element-ui 按需引入 常用UI组件库 移动端常用UI组件库 VantCube UIMint UIhttps://nutui.jd.com/#/ PC端常用UI组件库 Element UIIView UI element-ui 基本使用 安装element:n…

使用three.js渲染第一个场景和物体

一、效果图&#xff1a; 二、渲染场景和物体的步骤 创建场景(Scene)&#xff1a;在 three.js 中创建场景通过调用 THREE.Scene() 方法&#xff0c;然后将其赋值给变量。 var scene new THREE.Scene(); 创建相机(Camera)&#xff1a;在 three.js 中创建相机通过调用 THREE.Pe…

什么是量词符?怎样理解量词符?

量词符用来设定某个模式出现的次数&#xff0c;通过使用量词符(?、、*、)能够完成某字符连续出现的匹配。具体如表所示。 上表中&#xff0c;“…”表示多次。为了更好地理解量词符的使用&#xff0c;下面我们以a字符为例进行演示&#xff0c;示例代码如下。 var reg /~a*…

CSC公派访问学者申请的几个重要步骤

CSC&#xff08;中国国家留学基金委员会&#xff09;公派访问学者项目为有志于在国外进一步深造、学术交流的学者提供了宝贵的机会。然而&#xff0c;在申请过程中需要注意一些重要的步骤&#xff0c;以确保申请的顺利进行。下面知识人网小编将为您介绍几个关键的申请步骤。 第…

Python代码覆盖率分析工具Coverage

目录 简介 安装 命令行中使用 调用API使用 简介 Coverage是一个Python代码覆盖率分析工具&#xff0c;它可以用于衡量Python测试代码的质量。通过给代码执行带来的覆盖率数据&#xff0c;Coverage可以帮助开发人员找出被回归测试代码中的漏洞&#xff0c;并且指明哪些代码…

c++类的导出和函数的修饰名

&#xff08;一&#xff09;c中类的导出方法 类前面添加__declspec(dllexport) 头文件如下定义&#xff1a; #pragma onceclass __declspec(dllexport) TestClass {int myint;double mydouble;float myfloat; private:int myfun0(float* f1, int* i2);public:TestClass();~…

发现 7 个 PM 优先级框架并立即获取 7 个免费模板

需求的优先级是项目经理工作中常被提及的&#xff0c;每一种优先级决策技术都有利有弊&#xff0c;也有对应的应用场景&#xff0c;如何选择合适的优决策技术&#xff0c;是产品经理做好优先级管理的前提。那么在项目管理工作中&#xff0c;要如何去评估需求的优先级呢&#xf…