Greenplum之日常SQL记录整理(持续增加中)

1、使用generate_series函数制造测试数据

CREATE TABLE "public"."cccc" (
"id" int8 NOT NULL,
"name" varchar(255)
) DISTRIBUTED BY("id");

insert into "public"."cccc" select 1, 'test' || seq::text from generate_series(1,1000000000) as g(seq);

2、查看数据存储倾斜的表

		SELECT current_database(),schema_name,table_name,max_div_avg,pg_size_pretty(total_size) table_size 
		FROM (
			SELECT schema_name,table_name,
				MAX(size)/(AVG(size)+0.001) AS max_div_avg,
				CAST(SUM(size) AS BIGINT) total_size
			FROM
				(
			SELECT o.gp_segment_id,
						n.nspname as schema_name,
						o.relname as table_name,
						pg_relation_size(o.oid) size
				FROM gp_dist_random('pg_class') o
					LEFT JOIN pg_namespace n on o.relnamespace=n.oid
				WHERE o.relkind='r'
				AND o.relstorage IN ('a','h')
			) t
			GROUP BY schema_name,table_name
			)tab 
		WHERE total_size >= 104857600
		AND max_div_avg>1.5
		ORDER BY total_size DESC;

3、查看各个数据库的大小

SELECT sodddatname as database_name,sodddatsize/(1024*1024) as database_size_mb from gp_toolkit.gp_size_of_database;

SELECT *,pg_size_pretty(sodddatsize) dbsize FROM gp_toolkit.gp_size_of_database ORDER BY sodddatsize desc;

4、查看segment角色节点的剩余可用存储大小

SELECT dfhostname as segment_hostname,sum(dfspace)/count(dfspace)/(1024*1024) as segment_disk_free_gb from gp_toolkit.gp_disk_free GROUP BY dfhostname;

5、查看数据库锁信息

		SELECT pg_locks.pid
			 , pg_database.datname
			 , pg_stat_activity.usename
			 , locktype
			 , mode
			 , pg_stat_activity.application_name
			 , state
			 , CASE
						WHEN granted='f' THEN
							'wait_lock'
						WHEN granted='t' THEN
							'get_lock'
					END lock_satus
			 , pg_stat_activity.query
			 , least(query_start,xact_start) start_time
			 , count(*)::float
		  FROM pg_locks
		  JOIN pg_database ON pg_locks.database=pg_database.oid
		  JOIN pg_stat_activity on pg_locks.pid=pg_stat_activity.pid
		WHERE NOT pg_locks.pid=pg_backend_pid()
		AND pg_stat_activity.application_name<>'pg_statsinfod'
		GROUP BY pg_locks.pid, pg_database.datname,pg_stat_activity.usename, locktype, mode,
		pg_stat_activity.application_name, state , lock_satus ,pg_stat_activity.query, start_time
		ORDER BY start_time

6、检查系统中膨胀率超过N的AO表

膨胀率超过千分之2的AO表:

select * from (  
  select t2.nspname, t1.relname, (gp_toolkit.__gp_aovisimap_compaction_info(t1.oid)).*   
  from pg_class t1, pg_namespace t2 where t1.relnamespace=t2.oid and relstorage in ('c', 'a')   
) t   
where t.percent_hidden > 0.2;

7、检查系统中膨胀的堆存储的表。

		SELECT current_database(),bdinspname,bdirelname,bdirelpages,bdiexppages,(
		case 
			when position('moderate' in bdidiag)>0 then '中度膨胀'
			when position('significant' in bdidiag)>0 then '严重膨胀' 
			else '轻微膨胀'
		end) as bloat_state 
		FROM gp_toolkit.gp_bloat_diag ORDER BY bloat_state asc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值