当前位置: 首页 > news >正文

Greenplum实用技巧

一、通过gp_segment_id查看数据倾斜

gp_segment_id是表中的隐藏列,用来标记该行属于哪个segment节点。因此可以基于该隐藏列进行分组查询,获取每个segment的记录数,从而判断表数据的分布是否均匀或有倾斜。

qb=#select gp_segment_id, count(*) from call_center group by 1 order by 1;gp_segment_id | count 
---------------+-------0 |     41 |     22 |     63 |     44 |     55 |     3
(6 rows)

二、查看segment配置和状态

gp_segment_configuration是一张系统表,它维护包括master、standby在内的所有节点信息。是DBA了解集群最直观的方式。

qb=# select * from gp_segment_configuration order by 1;dbid | content | role | preferred_role | mode | status | port  | hostname | address |                datadir                
------+---------+------+----------------+------+--------+-------+----------+---------+---------------------------------------1 |      -1 | p    | p              | n    | u      |  5432 | n208     | n208    | /var/lib/qb-data/master/qbseg-12 |       0 | p    | p              | n    | u      | 40000 | n208     | n208    | /var/lib/qb-data/primary/qbseg03 |       1 | p    | p              | n    | u      | 40001 | n208     | n208    | /var/lib/qb-data/primary/qbseg14 |       2 | p    | p              | n    | u      | 40000 | n209     | n209    | /var/lib/qb-data/primary/qbseg25 |       3 | p    | p              | n    | u      | 40001 | n209     | n209    | /var/lib/qb-data/primary/qbseg36 |       4 | p    | p              | n    | u      | 40000 | n210     | n210    | /var/lib/qb-data/primary/qbseg47 |       5 | p    | p              | n    | u      | 40001 | n210     | n210    | /var/lib/qb-data/primary/qbseg5

三、查看表的大小

查看表的大小有两种方式,一种是\d+,一种是pg_size_pretty。
如果是在一个schema下直接执行\d+,可以一次性看到所有表的size,如下

qb=# \d+List of relationsSchema |             Name             |       Type        |  Owner   |  Storage  |   Size   | Description 
--------+------------------------------+-------------------+----------+-----------+----------+-------------tpcds  | call_center                  | table             | qb| ao_column | 1039 kB  | tpcds  | catalog_page                 | table             | qb| ao_column | 2575 kB  | tpcds  | catalog_returns              | partitioned table | qb| ao_column | 0 bytes  | tpcds  | catalog_returns_1_prt_10     | table             | qb| ao_column | 1092 kB  | tpcds  | catalog_returns_1_prt_100    | table             | qb| ao_column | 2197 kB  | tpcds  | catalog_returns_1_prt_101    | table             | qb| ao_column | 2216 kB  | tpcds  | catalog_returns_1_prt_102    | table             | qb| ao_column | 2192 kB  | tpcds  | catalog_returns_1_prt_103    | table             | qb| ao_column | 2190 kB  | tpcds  | catalog_returns_1_prt_104    | table             | qb| ao_column | 2175 kB  | tpcds  | catalog_returns_1_prt_105    | table             | qb| ao_column | 2174 kB  | tpcds  | catalog_returns_1_prt_106    | table             | qb| ao_column | 2136 kB  | tpcds  | catalog_returns_1_prt_107    | table             | qb| ao_column | 2119 kB  | tpcds  | catalog_returns_1_prt_108    | table             | qb| ao_column | 2091 kB  | tpcds  | catalog_returns_1_prt_109    | table             | qb| ao_column | 2072 kB  |

如果想查看某一张表的size,可以使用pg_size_pretty,如下

qb=# select pg_size_pretty(pg_relation_size('catalog_returns_1_prt_158'));pg_size_pretty 
----------------929 kB
(1 row)

除此之外,还有以下一系列函数可以查看数据库、表占用空间大小。

函数说明
pg_database_size(‘znids_dc’)数据库大小,不计算索引
pg_total_size(‘znids_dc’)数据库大小,包含索引
pg_indexes_size(‘alert_log_sm’)表中索引大小
pg_relation_size(‘alert_log_sm’)表大小,不包括索引
pg_total_relation_size(‘alert_log_sm’)表大小,包括索引
pg_tablespace_size(‘alert_log_sm’)表空间大小

四、explain相关用法

如果是仅查看执行计划,可直接使用explain select xxx。
如果是希望查看执行计划,并输出语句执行耗时,可使用explain analyze select xxx。

qb=# explain analyze select cc_call_center_sk,count(*) from call_center group by 1;QUERY PLAN                                                         
---------------------------------------------------------------------------------------------------------------------------Gather Motion 6:1  (slice1; segments: 6)  (cost=0.00..431.00 rows=24 width=12) (actual time=3.223..4.193 rows=24 loops=1)->  GroupAggregate  (cost=0.00..431.00 rows=4 width=12) (actual time=0.519..0.528 rows=6 loops=1)Group Key: cc_call_center_sk->  Sort  (cost=0.00..431.00 rows=4 width=4) (actual time=0.504..0.509 rows=6 loops=1)Sort Key: cc_call_center_skSort Method:  quicksort  Memory: 150kBExecutor Memory: 152kB  Segments: 6  Max: 26kB (segment 2)->  Seq Scan on call_center  (cost=0.00..431.00 rows=4 width=4) (actual time=0.459..0.470 rows=6 loops=1)Optimizer: ORCA Optimizer (QBORCA)Planning Time: 15.128 ms(slice0)    Executor memory: 27K bytes.(slice1)    Executor memory: 159K bytes avg x 6 workers, 159K bytes max (seg0).  Work_mem: 26K bytes max.Memory used:  128000kBExecution Time: 5.362 ms
(14 rows)

五、使用show显示某个参数的值

可以在命令行使用show xxx来显示某个参数的值。如,

qb=# show max_connections ;max_connections 
-----------------250
(1 row)

六、通过gpconfig修改参数

通过gpconfig配置Master和所有Segment的postgresql.conf中参数。
查询:gpconfig -s
修改:gpconfig -c

比如,

gpconfig -c work_mem -v 120MB –masteronly
修改master上的work_mem =120MB
gpconfig -c max_connections -v 100 -m 10
修改Master上max_connections=10,Segment上修改成100
gpconfig -r default_statistics_target
注释参数,使用缺省参数
gpconfig –l
列出所有的参数
gpconfig -s max_connections
显示某个参数
最大连接数:show max_connections;
最大事务数:show max_prepared_transactions;
http://www.lryc.cn/news/144837.html

相关文章:

  • 以物联网为核心的智慧工地云平台:聚集智能技术,实现建筑工地智慧管理
  • Java项目-苍穹外卖-Day05-Redis技术应用
  • linux安装jmeter
  • 【笔记】泛型以及如何绕过泛型定义
  • JAVA JNA 调用C接口的三种方式
  • StarRocks入门到熟悉
  • 华为AR路由器 典型配置案例——以太网交换
  • DP读书:鲲鹏处理器 架构与编程(十三)操作系统内核与云基础软件
  • Vue2项目练手——通用后台管理项目第一节
  • 「Vue|网页开发|前端开发」02 从单页面到多页面网站:使用路由实现网站多个页面的展示和跳转
  • 【Nginx20】Nginx学习:FastCGI模块(二)缓存配置
  • 苹果支付外包开发流程
  • 银河麒麟V10(Tercel)服务器版安装 Docker
  • web、HTTP协议
  • 达梦SQL书写注意事项
  • 博途1200脉冲输出控制速度轴(轴工艺对象基本配置)
  • 微信小程序 通过setData 给两个变量设置同一个数组时,为什么修改一个变量,另一个会也被修改?
  • 保障Web安全:构建可靠的网络防御体系
  • LeetCode--HOT100题(44)
  • 大模型调试debug记录
  • 对话谷歌首席技术官肖恩,搜索引擎的里程碑,来看看搜索引擎界的大哥Algolia的“快、准、狠”突围关键
  • DP读书:鲲鹏处理器 架构与编程(十二)鲲鹏软件实战案例
  • 前端 -- 基础 VSCode 工具生成骨架标签新增代码 解释详解
  • 爬虫逆向实战(二十三)--某准网数据
  • ruoyi--数据权限
  • 快速开发平台是什么?和传统开发平台相比有哪些区别?
  • Android基于JNI的Java与C++互调
  • 【算法与数据结构】513、LeetCode找树左下角的值
  • React——组件缓存 react-activation
  • EV代码签名证书是什么?