统计功能和子对象的大小信息查询Bug

I hava below two statement sql:

0. not in subquery

select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||‘.‘||a.tablename)) from pg_tables a where a.tablename not in (select b.tablename from t b);

1. in subquery

select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||‘.‘||a.tablename)) from pg_tables a where a.tablename in (select b.tablename from t b);

The [0. not in subquery] can‘t work well, it‘s occur error:

ERROR: query plan with multiple segworker groups is not supported (cdbdisp.c:500)

HINT: likely caused by a function that reads or modifies data in a distributed table

CONTEXT: SQL statement "select sum(pg_total_relation_size(‘information_schema.sql_languages‘))::int8 from gp_dist_random(‘gp_id‘);"

The [1. in subquery] work well.

Detailed below test:

gtlions=# select version();
version
------------------------------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 8.2.15 (Greenplum Database 4.2.7.3 build 1) on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.4.2 compiled on May 7 2014 14:31:08
(1 row)

gtlions=# select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename not in (select b.tablename from t b);
ERROR: query plan with multiple segworker groups is not supported (cdbdisp.c:500)
HINT: likely caused by a function that reads or modifies data in a distributed table
CONTEXT: SQL statement "select sum(pg_total_relation_size('information_schema.sql_languages'))::int8 from gp_dist_random('gp_id');"
gtlions=# explain select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename not in (select b.tablename from t b);
QUERY PLAN
-----------------------------------------------------------------------------------------------
Hash Left Anti Semi Join (cost=568.98..235912.69 rows=676396 width=128)
Hash Cond: c.relname = "NotIn_SUBQUERY".tablename::name
-> Hash Left Join (cost=395.97..223194.68 rows=676419 width=128)
Hash Cond: c.relnamespace = n.oid
-> Hash Left Join (cost=2.62..112777.67 rows=676419 width=68)
Hash Cond: c.reltablespace = t.oid
-> Seq Scan on pg_class c (cost=0.00..2751.39 rows=676419 width=72)
Filter: relkind = 'r'::"char" AND relname IS NOT NULL
-> Hash (cost=1.02..1.02 rows=2 width=4)
-> Seq Scan on pg_tablespace t (cost=0.00..1.02 rows=128 width=4)
-> Hash (cost=365.35..365.35 rows=35 width=68)
-> Seq Scan on pg_namespace n (cost=0.00..365.35 rows=2240 width=68)
-> Hash (cost=106.61..106.61 rows=83 width=274)
-> Gather Motion 64:1 (slice1; segments: 64) (cost=0.00..106.61 rows=83 width=274)
-> Subquery Scan "NotIn_SUBQUERY" (cost=0.00..52.66 rows=2 width=274)
-> Seq Scan on t b (cost=0.00..51.83 rows=2 width=24)
(16 rows)

gtlions=# select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename in (select b.tablename from t b);
schemaname | size-1
-------------+---------
public | 32 kB
public | 32 kB
......
......
public | 96 kB
gtlions=# explain select a.schemaname, pg_size_pretty(pg_total_relation_size(a.schemaname||'.'||a.tablename)) from pg_tables a where a.tablename in (select b.tablename from t b);
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------
Gather Motion 64:1 (slice7; segments: 64) (cost=445.41..10096.03 rows=1 width=128)
-> Hash Left Join (cost=445.41..10096.03 rows=1 width=128)
Hash Cond: c.reltablespace = t.oid
-> Redistribute Motion 64:64 (slice5; segments: 64) (cost=443.06..10092.81 rows=1 width=132)
Hash Key: c.reltablespace
-> Hash Left Join (cost=443.06..10092.22 rows=1 width=132)
Hash Cond: c.relnamespace = n.oid
-> Redistribute Motion 64:64 (slice3; segments: 64) (cost=54.53..9703.24 rows=1 width=72)
Hash Key: c.relnamespace
-> Hash EXISTS Join (cost=54.53..9702.65 rows=1 width=72)
Hash Cond: c.relname = b.tablename::name
-> Redistribute Motion 1:64 (slice1) (cost=0.00..9621.26 rows=10570 width=72)
Hash Key: c.relname
-> Seq Scan on pg_class c (cost=0.00..2751.39 rows=676419 width=72)
Filter: relkind = 'r'::"char"
-> Hash (cost=53.49..53.49 rows=2 width=24)
-> Redistribute Motion 64:64 (slice2; segments: 64) (cost=0.00..53.49 rows=2 width=24)
Hash Key: b.tablename::name
-> Seq Scan on t b (cost=0.00..51.83 rows=2 width=24)
-> Hash (cost=388.10..388.10 rows=1 width=68)
-> Redistribute Motion 1:64 (slice4) (cost=0.00..388.10 rows=35 width=68)
Hash Key: n.oid
-> Seq Scan on pg_namespace n (cost=0.00..365.35 rows=2240 width=68)
-> Hash (cost=2.32..2.32 rows=1 width=4)
-> Redistribute Motion 1:64 (slice6) (cost=0.00..2.32 rows=2 width=4)
Hash Key: t.oid
-> Seq Scan on pg_tablespace t (cost=0.00..1.02 rows=128 width=4)
(27 rows) 

该问题应该是个Bug,等一下TSE鉴于Fix或不Fix而只是等待,直到下一个版本升级.

-EOF-

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2024-11-08 23:56:22

统计功能和子对象的大小信息查询Bug的相关文章

基于Java EE技术的公司职员信息管理系统查询与统计功能的设计与实现

获取项目源文件,技术交流与指导联系Q:1225467431 摘要 二十一世纪的今天,随着互联网的普及与发展,计算机技术已经广泛的应用于人们的生产办公中,特别是信息的处理加工,更大大的推进着企业的生产效率的增长,企业管理信息化已经成为一个必然的趋势. 本课题研究并开发基于J2EE多层框架的人事信息管理系统.此系统不同于以往的人事信息管理软件,而是在互联网的大背景下,实现以数据库服务器来维护人事信息数据,浏览器客户端来动态访问服务器,这种采用B/S架构的管理系统,有利于充分利用互联网覆盖范围广,通信

通过数据库读取,获取MVM各扫描任务的漏扫数量趋势统计以及详细信息查询

当大型分布式部署的漏扫系统投入运行之后,对全行接近50家分行的服务器进行扫描,数据量陡增,作为唯一的管理员,必然被淹没了,不可能再像之前一样,逐个扫描报告分析,并编写扫描报告,通知各管理员整改.而且MVM自身的漏洞整改跟踪机制也不再适用,细粒度的Ticket功能,对分行管理员和自己都是负担.该如何解决呢? 经过思考和讨论,决定转换角色,通过统计全局的数据,来掌握分行管理员的配合支持程度,和分行的总体漏洞数量.通过建立漏洞信息查询平台,提供整改方法和补丁下载等各种资源.而具体的工作则由分行管理员自

solr4.5分组查询、统计功能介绍

说到分组统计估计大家都不会陌生,就是数据库的group by语句,但是当我们采用solr4.5全文检索时,数据库提供再好的sql语句都没有任何的意义了,那么在solr4.5中我们如何做到分组统计呢?其实很简单,下面我们来看看怎么做. 示例场景: 现在有个电子商务网站的产品搜索功能,不同的商家发布不同的产品,我们想通过关键词"手机"去查找不同商家下面有多少有关手机的产品.假设索引库的结构是产品id(id).产品标题(title).产品价格(price).商家id(companyId).

百度地图:普通覆盖物,以及多边形覆盖物,及他们的描述信息的添加,修改,删除,查看功能,还有多边形根据名称查询功能;

版权所有,未经本人允许,禁止转载! 这个界面功能是,普通覆盖物,以及多边形覆盖物,及他们的描述信息的添加,修改,删除,查看功能,还有多边形根据名称查询功能: 由于这个界面的数据是存在数据库,还有后台代码,所以这个页面无法直接使用: <%@ page contentType="text/html;charset=UTF-8"%> <%@ include file="/WEB-INF/views/include/taglib.jsp"%> <

Springboot项目配置druid数据库连接池,并监控统计功能

pom.xml配置依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.6</version> </dependency>  资源文件配置信息 不管是

atitit. 统计功能框架的最佳实践(1)---- on hibernate criteria

atitit. 统计功能框架的最佳实践(1)---- on hibernate criteria 1. 关键字 1 2. 统计功能框架普通有有些条件选项...一个日期选项..一个日期类型(日,周,月份,年等) 1 3. 元数据的位置,不需要绑定class 1 4. 设置聚合字段... @reduce(" sum(timLen) "),@reduce(" Avg(timLen) ") 2 5. 设置groupby  字段  @GroupBy 2 6. 设置groupb

Linux硬件信息查询命令

系统 uname -a              # 查看内核/操作系统/CPU信息 Linux hostname 2.6.18-128.el5 #1 SMP Wed Dec 17 11:41:38 EST 2008 x86_64 x86_64 x86_64 GNU/Linux head -n 1 /etc/issue      # 查看操作系统版本 Red Hat Enterprise Linux Server release 5.3 (Tikanga) cat /proc/cpuinfo  

教室实时信息查询系统 项目需求规格说明书

  教室实时信息查询系统 项目需求规格说明书 参与人:尹伟 吴文斌 东华理工大学 2015年10月31日 目    录 1.            文档说明... - 1 - 1.1编写目的... - 1 - 1.2背景... - 1 - 1.3适用范围... - 1 - 1.4预期读者与阅读建议... - 2 - 1.5参考文献... - 2 - 1.6术语与缩写解释... - 2 - 1.6.1术语... - 2 - 1.6.2缩写... - 3 - 2.       系统说明... - 4

网站统计功能的设计与实现

关键字:网站统计 设计 实现 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/website-statistic-analysis.html 本文简要介绍网站统计功能的设计与实现. 本文分为以下五个部分: 埋点设计与实现 页面引入 数据接收 数据入库 统计分析 一.埋点设计与实现 在JavaScript中,包含了很多对象,可以用于获取用户的数据.比如Document对象用于分析每个载入浏览器的 HTML 文档,可以获得当前文档的域名.URL.及当前文档的