-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path기타참고
More file actions
194 lines (159 loc) · 6.55 KB
/
기타참고
File metadata and controls
194 lines (159 loc) · 6.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
vi .bashrc
source /usr/local/greenplum-db/greenplum_path.sh
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-17.0.16.0.8-2.el9.x86_64
export PATH=$PATH:$PXF_HOME/bin
export PXF_HOME=/usr/local/greenplum-db/pxf
export PXF_BASE=/home/gpadmin/pxf-base
export COORDINATOR_DATA_DIRECTORY=/data/coordinator/gpseg-1
export MASTER_DATA_DIRECTORY=/data/coordinator/gpseg-1
export PGDATABASE=postgres
export PGHOST=whpg-m
export PGPORT=5432
export PGUSER=gpadmin
export PGPASSWORD=gpadmin
$ gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem –n C –m 200 -S
$ export COORDINATOR_DATA_DIRECTORY=/data/master/gpseg-1
$ gpstate
$ gpinitstandby -s whpg-sm
$ gpinitstandby -s whpg-s
$ gprecoverseg or gprecoverseg -r
$ gpactivatestandby -d $COORDINATOR_DATA_DIRECTORY
$ gpdeletesystem -d $COORDINATOR_DATA_DIRECTORY -f
# Segment Role 확인
select content, role, port, hostname, address from gp_segment_configuration ;
SELECT * FROM pg_available_extensions;
SELECT * FROM pg_extension;
# Greenplum을 재시작하면서 세그먼트 역할을 선호 역할로 재조정합니다.
gpstop -r
# 모든 세그먼트 인스턴스를 선호 역할로 전환 (Greenplum 6.x 이상에서 사용)
gprecoverseg -r
SELECT extname, extversion FROM pg_extension;
# parameter 변경
gpconfig -c log_duration -v on
gpconfig -c gp_workfile_compress_algorithm -v zlib --masteronly
gpconfig -c statement_mem -v 512MB
# vector
sudo dnf install edb-wpg7-pgvector0
# cbcopy
cbcopy --with-global-metadata --source-host=127.0.0.1 \
--source-port=5432 --source-user=gpadmin \
--dest-host=127.0.0.1 --dest-port=5432 \
--dest-user=gpadmin --schema=whpg.public \
--dest-schema=postgres.public \
--truncate
# function 확인
SELECT p.proname AS function_name,
l.lanname AS language_name
FROM pg_catalog.pg_proc p
JOIN pg_catalog.pg_language l ON p.prolang = l.oid
WHERE p.pronamespace IN (SELECT oid FROM pg_namespace WHERE nspname NOT LIKE 'pg_%' AND nspname != 'information_schema')
AND p.prokind = 'f'
AND p.proname NOT LIKE 'pg_%'
ORDER BY function_name;
SHOW gp_interconnect_type;
---
=# select * from pg_stat_activity
## 프로세스 종료
=# select pg_cancel_backend(PID);
=# select pg_terminate_backend(PID);
--- size of database ----
SELECT pg_size_pretty(pg_database_size('데이터베이스이름'));
SELECT
datname AS database_name,
pg_size_pretty(pg_database_size(datname)) AS size
FROM
pg_database
ORDER BY
pg_database_size(datname) DESC; -- 크기가 큰 순서로 정렬
---- check skew ----
-- 왜곡 계수가 4 이상인 테이블만 조회
SELECT s.skcrelname AS table_name, s.skccoeff AS coefficient FROM gp_toolkit.gp_skew_coefficients s
WHERE s.skccoeff > 4 ORDER BY s.skccoeff DESC;
SELECT gp_segment_id, count(*) AS row_count FROM your_schema.your_table_name
GROUP BY gp_segment_id ORDER BY gp_segment_id;
-- 특정 테이블의 데이터 쏠림 계수 확인
SELECT * FROM gp_toolkit.gp_skew_coefficients WHERE skcrelname = '테이블명';
-- 특정 스키마의 모든 테이블 쏠림 확인
SELECT * FROM gp_toolkit.gp_skew_coefficients WHERE skcschemaname = '스키마명';
----- 분산키 확인 ----
SELECT a.attname AS distribution_key_column
FROM gp_distribution_policy p
JOIN pg_attribute a ON p.localoid = a.attrelid AND a.attnum = ANY(p.attrnums)
WHERE p.localoid = 'public.warehouse'::regclass;
SELECT n.nspname AS schema_name, c.relname AS table_name,
CASE
WHEN p.attrnums IS NULL THEN 'DISTRIBUTED RANDOMLY'
ELSE 'DISTRIBUTED BY (' || string_agg(a.attname, ', ') || ')'
END AS distribution_policy
FROM pg_class c
JOIN pg_namespace n ON c.relnamespace = n.oid
LEFT JOIN gp_distribution_policy p ON c.oid = p.localoid
LEFT JOIN pg_attribute a ON p.localoid = a.attrelid AND a.attnum = ANY(p.attrnums)
WHERE c.relkind = 'r' -- 일반 테이블만 조회
AND n.nspname = 'public' -- 특정 스키마 지정
GROUP BY n.nspname, c.relname, p.attrnums
ORDER BY n.nspname, c.relname;
---
gpload
drop table rtitrans_etl4;
CREATE TABLE rtitrans (
imsi character varying(82),
subscriber_mccmnc character varying(10),
msisdn character varying(82),
imei character varying(50),
called_digits character varying(50),
start_datetime integer,
end_datetime integer,
first_cell_lac integer,
first_cell_idsac integer,
current_cell_lac integer,
current_cell_idsac integer,
dr_type integer,
status character varying(50),
ingest_time bigint,
processed_time bigint,
export_time bigint,
extra_col text,
gploaded_time timestamp without time zone
)
WITH (appendonly=true) DISTRIBUTED BY (imsi);
=== pxf minoi parquet =====
CREATE EXTERNAL TABLE minio_parquet_cusomer (
-- MinIO Parquet 파일의 실제 스키마에 맞게 컬럼 정의
-- 데이터 타입은 Parquet의 논리적 타입과 PostgreSQL 타입 매핑 고려
c_customer_sk INTEGER ,
c_customer_id CHAR(16) ,
c_current_cdemo_sk INTEGER ,
c_current_hdemo_sk INTEGER ,
c_current_addr_sk INTEGER ,
c_first_shipto_date_sk INTEGER ,
c_first_sales_date_sk INTEGER ,
c_salutation CHAR(10) ,
c_first_name CHAR(20) ,
c_last_name CHAR(30) ,
c_preferred_cust_flag CHAR(1) ,
c_birth_day INTEGER ,
c_birth_month INTEGER ,
c_birth_year INTEGER ,
c_birth_country VARCHAR(20) ,
c_login CHAR(13) ,
c_email_address CHAR(50) ,
c_last_review_date CHAR(10)
)
--LOCATION ('pxf://192.168.56.51/pgaa/tpch_sf_1/customer/?PROFILE=s3&SERVER=s3')
LOCATION ('pxf://192.168.56.51/pgaa/tpch_sf_1/customer/?PROFILE=s3:parquet')
--ON ANY SEGMENT
FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
=== auto vacuum =====
-- autovacuum 활성화 여부 확인 (기본값: on)
SHOW autovacuum;
-- 기타 주요 설정 확인
SELECT name, setting, short_desc
FROM pg_settings
WHERE name LIKE 'autovacuum%';
SELECT datname, pid, usename, application_name, query
FROM pg_stat_activity
WHERE query LIKE 'autovacuum%';
SELECT gp_segment_id, datname, pid, query
FROM gp_dist_random('pg_stat_activity')
WHERE query LIKE 'autovacuum%';