Greenplum Database
2026년 3월 3일 화요일
Greenplum Ghost Index
2026년 2월 5일 목요일
다수 Array 컬럼이 포함된 테이블에 Analyze 수행시 메모리 사용량 및 수행시간 개선
- Greenplum 6.32.0에서 Array 컬럼이 다수 포함된 테이블에 Analyze 수행시 메모리 사용량 감소 및 수행시간 획기적 개선
- 실 테스트 데이터 기준: 테이블 용량 237GB, 전체 컬럼수 136개, array 컬럼 97개
- 마스터 노드 메모리 사용량 : 28,000MB -> 128MB (245배 메모리 사용량 개선)
- 수행 속도: 140초 -> 2초 (70배 속도 향상)
2. 적용 방법
1) Greenplum 6.32.0+ 버전 사용
- 기능 개선 사항:
- The ANALYZE command now skips columns with a zero statistics target during sampling.
- 모든 Array 컬럼에 대해서 통계 수집을 0으로 설정
ALTER TABLE table_name ALTER COLUMN array_colmun SET STATISTICS 0;
| Greenplum 6.28.2 | Greenplum 6.32.0 | 개선비(배) | ||||
| 메모리 사용량 (MB) | 소요시간(sec) | 메모리 사용량 (MB) | 소요시간(sec) | 메모리 개선비 | 소요시간 개선비 | |
| 1차 | 28,380 | 139 | 116 | 2 | 245 | 70 |
| 2차 | 28,632 | 141 | 116 | 2 | 247 | 71 |
| 3차 | 28,456 | 141 | 116 | 2 | 245 | 71 |
| 평균 | 28,489 | 140 | 116 | 2 | 246 | 70 |
2026년 2월 1일 일요일
Greenplum에서 RESTful API 사용하기
Greenplum에서 RESTful API 사용하기
Greenplum 7.6+에서 PostgREST 13을 지원
## 1. RESTAPI를 위한 DB 계정 및 테스트 테이블
-- 1) API 전용 스키마 생성
CREATE SCHEMA api;
-- 2) 샘플 테이블 생성
CREATE TABLE api.todos (
id serial PRIMARY KEY,
done boolean DEFAULT false,
task text NOT NULL,
due timestamptz
) DISTRIBUTED BY (id); -- Greenplum 특유의 DISTRIBUTED 절
-- 3) 데이터 삽입
INSERT INTO api.todos (task)
VALUES ('finish tutorial 0'), ('pat self on back');
SELECT * FROM api.todos;
id|done |task |due|
--+-----+-----------------+---+
2|false|pat self on back | |
1|false|finish tutorial 0| |
-- 4) 익명 사용자용 역할(Role) 생성
-- 실제 로그인 권한은 없으며, PostgREST가 이 권한으로 전환하여 쿼리합니다.
CREATE ROLE web_anon NOLOGIN;
GRANT USAGE ON SCHEMA api TO web_anon;
GRANT SELECT ON api.todos TO web_anon;
-- 5) 인증용 관리자 역할 생성 (PostgREST가 DB에 실제 접속할 때 사용)
CREATE ROLE authenticator NOINHERIT LOGIN PASSWORD 'changeme';
GRANT web_anon TO authenticator;
## 2. PostgREST 13 설치 및 구동
-- 1) Greenplum PostgREST 13.0.4-1 for RHEL 9 다운로드
-- https://support.broadcom.com/
-- 다운로드 파일 : postgrest-13.0.4-1.el9.x86_64.rpm
-- 2) PostgREST 설치
# yum install postgrest-13.0.4-1.el9.x86_64.rpm
# which postgrest
/usr/bin/postgrest
# ls -la /usr/bin/postgrest
-rwxr-xr-x 1 root root 20148784 Jul 11 2025 /usr/bin/postgrest
-- 3) PostgREST 설정
-- postgrest.conf 설정
$ cat << EOF > $COORDINATOR_DATA_DIRECTORY/postgrest.conf # Prepare CONFIGURATION
# postgrest.conf
# Greenplum Coordinator 노드의 접속 정보
db-uri = "postgres://authenticator:changeme@172.16.65.31:5432/gpkrtpch"
# API로 노출할 스키마
db-schemas = "api"
# 인증되지 않은 요청이 사용할 역할
db-anon-role = "web_anon"
# 서버 포트 설정
server-port = 3000
# (선택) PostgREST 13 신규 기능: 스키마 캐시 최적화
# Greenplum은 스키마가 방대할 수 있으므로 필요한 경우 설정
db-pool = 10
EOF
-- postgrest.conf 설정 확인
$ cat $COORDINATOR_DATA_DIRECTORY/postgrest.conf
-- 4) PostgREST 구동
$ postgrest $COORDINATOR_DATA_DIRECTORY/postgrest.conf
## 3. RESTAPI 테스트
-- 1) 테이블 조회
[gpadmin@r9g7s1 ~]$ curl http://172.16.65.31:3000/todos
[{"id":2,"done":false,"task":"pat self on back","due":null},
{"id":1,"done":false,"task":"finish tutorial 0","due":null}]
[gpadmin@r9g7s1 ~]$
-- 2) 테이블 조회 및 Json 문서로 출력
[gpadmin@r9g7s1 ~]$ curl http://172.16.65.31:3000/todos | jq
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 123 100 123 0 0 7687 0 --:--:-- --:--:-- --:--:-- 8200
[
{
"id": 2,
"done": false,
"task": "pat self on back",
"due": null
},
{
"id": 1,
"done": false,
"task": "finish tutorial 0",
"due": null
}
]
## 4. RESTAPI Features
-- 1) Filtering
$ curl "http://172.16.65.31:3000/todos?id=eq.1"
=# SELECT * FROM api.todos WHERE id = 1;
$ curl "http://172.16.65.31:3000/todos?id=eq.1&done=eq.false"
=# SELECT * FROM api.todos WHERE id = 1 AND done = false;
$ curl "http://172.16.65.31:3000/todos?task=like.*tutorial*"
=# SELECT * FROM api.todos WHERE task LIKE '%tutorial%';
-- 2) sorting
$ curl "http://172.16.65.31:3000/todos?order=id.asc"
=# SELECT * FROM api.todos ORDER id;
$ curl "http://172.16.65.31:3000/todos?order=id.desc"
=# SELECT * FROM api.todos ORDER id desc;
-- 3) pagination
$ curl "http://172.16.65.31:3000/todos?limit=15&offset=30"
=# SELECT * FROM api.todos LIMIT 15 OFFSET 30;
2025년 6월 24일 화요일
Greenplum 7.5에서 Analyze 기능개선
1. analyze 개선 사항
- Analyze 수행 후 테이블에 변경이 없을 경우, Analyze를 자동 skip
- 개선 버전: Greenplum 7.5+
2. Greenplum 버전별 analyzedb, analyze 의 skip 적용 범위
구분 | analyzedb | analyze
----------------------------------------------------
AO/CO 테이블 | O | O
Heap 테이블 | X | O
Materialized View(MV) | X | O
파티션 테이블 | O | O
Root 통계 skip | O | O
3. 테스트 결과
1) Greenplum 7.4.1
gpadmin=# select version();
version
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
PostgreSQL 12.12 (Greenplum Database 7.4.1 build commit:2999e4235c947b8339a7351af0d760a405821a9b) on x86_64-pc-li
nux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5), 64-bit compiled on Apr 10 2025 01:41:02 Bhuvnes
h C.
(1 row)
Time: 6.032 ms
gpadmin=# \dt+ public.order_log*
List of relations
Schema | Name | Type | Owner | Storage | Size | Description
--------+---------------------------+-------------------+---------+---------+---------+-------------
public | order_log | partitioned table | gpadmin | ao_row | 0 bytes |
public | order_log_1_prt_p2001 | table | gpadmin | ao_row | 152 MB |
public | order_log_1_prt_p2002 | table | gpadmin | ao_row | 152 MB |
public | order_log_1_prt_p2003 | table | gpadmin | ao_row | 152 MB |
public | order_log_1_prt_p2004 | table | gpadmin | ao_row | 448 kB |
public | order_log_1_prt_p2005 | table | gpadmin | ao_row | 448 kB |
public | order_log_1_prt_p2006 | table | gpadmin | ao_row | 448 kB |
public | order_log_1_prt_p2007 | table | gpadmin | ao_row | 448 kB |
public | order_log_1_prt_p2008 | table | gpadmin | ao_row | 448 kB |
public | order_log_1_prt_p2009 | table | gpadmin | ao_row | 448 kB |
gpadmin=# analyze public.order_log;
ANALYZE
Time: 2596.419 ms (00:02.596)
gpadmin=# analyze public.order_log; --<<<<<<< 테이블 변경없음에도 불구하고 anlyze 를 수행하면, 실제 다시 재수행 됨.
ANALYZE
Time: 2479.870 ms (00:02.480)
2) Greenplum 7.5
gpadmin=# select version();
version
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
PostgreSQL 12.22 (Greenplum Database 7.5.1 build commit:9d50a8112ee52cab602caa48562c4045fc66c86a) on x86_64-pc-li
nux-gnu, compiled by gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5), 64-bit compiled on Jun 10 2025 07:31:20 Bhuvnes
h C.
(1 row)
Time: 31.014 ms
gpadmin=# analyze public.order_log; --<< DB 업그레이드 이전에 통계 정보가 있고, 테이블이 변경되지 않았기 때문에, 내부적으로 anlyze skip
ANALYZE
Time: 78.057 ms
--특정 파티션에만 데이터 적재시, 해당 파티션만 anlyze 재수행
gpadmin=# insert into public.order_log_1_prt_p2009 (order_id, cust_id, prod_nm, order_date) values (1, 1, 'P1', '2009-01-11');
INSERT 0 1
Time: 20.505 ms
gpadmin=# analyze public.order_log;
ANALYZE
Time: 33.510 ms
gpadmin=# analyze public.order_log;
ANALYZE
Time: 26.783 ms
gpadmin=# analyze public.order_log;
ANALYZE
Time: 26.707 ms
gpadmin=#
--파티션이 아닌 테이블일 경우, 해당 테이블에 대해서는 anlyze 재수행 됨.
gpadmin=# insert into public.order_log_idx select * from public.order_log_idx limit 1;
INSERT 0 1
Time: 35.709 ms
gpadmin=# analyze public.order_log_idx;
ANALYZE
Time: 5287.658 ms (00:05.288)
2025년 5월 6일 화요일
Greenplum7 - 쿼리 플랜 힌트
1. Greenplum 7 쿼리 플랜 힌트
- 쿼리 플랜 힌트 지원: Scan, Row Estimation, Join Order and Join Types.
- Greenplum 7.2 Release note
https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-greenplum/7/greenplum-database/relnotes-release-notes.html
- Greenplum 쿼리 플랜 힌트
https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-greenplum/7/greenplum-database/admin_guide-query-topics-optimizer-hints.html
2. 쿼리 플랜 힌트 사용하기 위한 설정
LOAD 'pg_hint_plan';
--database level
ALTER DATABASE gpadmin SET session_preload_libraries='pg_hint_plan';
ALTER USER gpadmin SET session_preload_libraries='pg_hint_plan';
SHOW pg_hint_plan.enable_hint;
on
3. 쿼리 힌트 적용 예제
1) pg_hint_plan 적용
- 특정 테이블에 대한 조인의 결과의 행 번호를 수정하도록 적용
- 옵티마이저가 조인에서 출력행 수를 부정확하게 추정하는 경우, 재분산 대신 브로드 캐스트 선택하거나,
HashJoin 대신 MergeJoin, NestLoop 조인등으로 최적화되지 않은 쿼리 플랜이 생성될 수 있음.
- 특히, 통계 누락이나 오래된 데이터로 인하여 옵티마이저의 추정값이 부정확할 때 유용
- 절대(#), 더하기(+), 빼기(-), 곱하기(*)를 이용하여 특정 테이블에 대한 조인 결과 행수를 수정하도록
적용(플랜 작성시 이용)
/*+ Rows(t1 t2 t3 +42) */ SELECT * FROM t1, t2, t3; -- adds 42 to original row estimate
/*+ Rows(t1 t2 t3 -42) */ SELECT * FROM t1, t2, t3; -- subtracts 42 from original row estimate
/*+ Rows(t1 t2 t3 *42) */ SELECT * FROM t1, t2, t3; -- multiplies 42 with original row estimate
## Table Access Hints
- 쿼리할 테이블의 스캔 유형과 인덱스를 지정하여, 데이터 스캔 최적화시 적용
- 오래된 통계나 Cost/카니널리티의 잘못된 추정시 옵티마이저가 비효율적인 스캔 방지를 위한 힌트
/*+ SeqScan(t1) */ SELECT * FROM t1 WHERE t1.a > 42; -- force sequential scan
/*+ IndexScan(t1 my_index) */ SELECT * FROM t1 WHERE t1.a > 42; -- force index scan
/*+ IndexOnlyScan(t1) */ SELECT * FROM t1 WHERE t1.a > 42; -- force index-only scan
/*+ BitmapScan(t1 my_bitmap_index) */ SELECT * FROM t1 WHERE t1.a > 42; --force bitmap index scan
- 조인 형태를 재정의
- 예상치 못한 계산 왜곡으로 인해 hash join으로 플랜을 짤 경우, 디스크로에 임시로 파일을 많이
사용하는 경우 발생되는데, 이를 인덱스를 이용하여 nestloop으로 변경이 가능 함.
- nestloop 조인을 hash Join으로 변경도 가능.
/*+ NestLoop(t1 t2) */ SELECT * FROM t1, t2;
/*+ MergeJoin(t1 t2) */ SELECT * FROM t1 FULL JOIN t2 ON t1.a=t2.a;
- 조인 순서를 지정하여, 옵티마이저가 비효율적인 조인 전략을 피하도록 플랜 작성
/*+ Leading(t1 t2 t3) */ SELECT * FROM t1, t2, t3;
/*+ Leading(t1 (t3 t2)) */ SELECT * FROM t1, t2, t3;
- GUC 매개변수 값을 hist에 정의된 값으로 적용
- 다른 hint와 충돌하는 경우 적용되지 않음.
3) Plan Hints Logging
set client_min_messages = 'log';
/*+SeqScan(t1)IndexScan(t2)*/
EXPLAIN (COSTS false) SELECT * FROM t1, t2 WHERE t1.id = t2.id;
LOG: pg_hint_plan:
used hint:
SeqScan(t1)
IndexScan(t2)
not used hint:
duplication hint:
error hint:
--------------------------------------------
Hash Join
Hash Cond: (t1.id = t2.id)
-> Seq Scan on t1
-> Hash
-> Index Scan using t2_pkey on t2
(5 rows)
1) pg_hint_plan는 GPORCA 및 Postgres 쿼리 플랜 모두 지원.
2) GUC 쿼리 세션 파라미터로는 쿼리 플랜이 변경되지 않는 경우에도 힌트로 쿼리 플랜을 변경 가능.
3) 쿼리 플랜을 변경하는 경우에는 특정 패턴에 대해서만 적용하는 것을 추천
- 더 나은 플랜이 있더라도 사용자에 의해서 쿼리 플랜이 고정되기 때문에 주의가 필요 함.
2025년 3월 23일 일요일
Rockey 9.x에서 Greenplum TPC-DS 컴파일시 에러 조치
1. 개요
- Rockey 8.x 에서는 gcc 8.x를 이용하여 컴파일하는데, Rockey 9.5 에서는 gcc 11.5를 이용하여 컴파일
- TPCDS 실행시 데이터 생성하는 dsdgen 컴파일시 에러 발생
- gcc 9.5 소스를 빌드하고 난뒤 gcc 9.5로 TPCDS를 컴파일하면 이슈 해결
- 주의 사항
* gcc 9.5를 설치하고, TPCDS를 수행 한 후에 gcc 파일명을 gcc-9로 이름 변경
- Greenplum TPCDS 관련 링크
* https://github.com/RunningJon/TPC-DS
* https://github.com/gpdbkr/gpmixedworkload
2. TPCDS 수행시 에러
[gpadmin@cdw TPC-DS]$ ./tpcds.sh
...
collect2: error: ld returned 1 exit status
make: *** [Makefile:234: dsdgen] Error 1
3.gcc 9.5 설치
1) 설치
- root 계정으로 설치
[root@cdw local]# cd /usr/local
[root@cdw local]# wget http://ftp.gnu.org/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.gz
[root@cdw local]# tar zxf gcc-9.5.0.tar.gz
[root@cdw local]# cd gcc-9.5.0
[root@cdw gcc-9.5.0]# ./contrib/download_prerequisites
[root@cdw gcc-9.5.0]# mkdir build
[root@cdw gcc-9.5.0]# ./configure --prefix=/usr/local/gcc-9.5.0 --enable-checking=release -disable-multilib --enable-languages=c,c++
[root@cdw gcc-9.5.0]# make -j$(nproc)
[root@cdw gcc-9.5.0]# make install
[root@cdw gcc-9.5.0]# /usr/local/gcc-9.5.0/bin/gcc --version
gcc (GCC) 9.5.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#### gcc파일을 /usr/local/bin/ 하위디렉로리에 복사
[root@scdw ~]# env | grep PATH
PATH=/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[root@scdw ~]#
[root@scdw bin]# cp /usr/local/gcc-9.5.0/bin/gcc /usr/local/bin/gcc
2) 설치 도중 화면 출력
#### download_prerequisites 수행 후 output
[root@scdw gcc-9.5.0]# ./contrib/download_prerequisites
2025-03-13 12:27:37 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 [2383840] -> "./gmp-6.1.0.tar.bz2" [1]
2025-03-13 12:27:42 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 [1279284] -> "./mpfr-3.1.4.tar.bz2" [1]
2025-03-13 12:27:47 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz [669925] -> "./mpc-1.0.3.tar.gz" [1]
2025-03-13 12:27:52 URL: ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2 [1658291] -> "./isl-0.18.tar.bz2" [1]
gmp-6.1.0.tar.bz2: OK
mpfr-3.1.4.tar.bz2: OK
mpc-1.0.3.tar.gz: OK
isl-0.18.tar.bz2: OK
All prerequisites downloaded successfully.
[root@scdw gcc-9.5.0]#
#### configure 수행 후 output
libtool: link: ranlib .libs/libtsan.a
libtool: link: rm -fr .libs/libtsan.lax
libtool: link: ( cd ".libs" && rm -f "libtsan.la" && ln -s "../libtsan.la" "libtsan.la" )
make[4]: Leaving directory '/gcc-9.5.0/x86_64-pc-linux-gnu/libsanitizer/tsan'
make[4]: Entering directory '/gcc-9.5.0/x86_64-pc-linux-gnu/libsanitizer'
true "AR_FLAGS=rc" "CC_FOR_BUILD=gcc" "CFLAGS=-g -O2" "CXXFLAGS=-g -O2 -D_GNU_SOURCE" "CFLAGS_FOR_BUILD=-g -O2" "CFLAGS_FOR_TARGET=-g -O2" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -c" "JC1FLAGS=" "LDFLAGS=" "LIBCFLAGS=-g -O2" "LIBCFLAGS_FOR_TARGET=-g -O2" "MAKE=make" "MAKEINFO=/gcc-9.5.0/missing makeinfo --split-size=5000000 --split-size=5000000 " "PICFLAG=" "PICFLAG_FOR_TARGET=" "SHELL=/bin/sh" "RUNTESTFLAGS=" "exec_prefix=/usr/local/gcc-9.5.0" "infodir=/usr/local/gcc-9.5.0/share/info" "libdir=/usr/local/gcc-9.5.0/lib" "prefix=/usr/local/gcc-9.5.0" "includedir=/usr/local/gcc-9.5.0/include" "AR=ar" "AS=/gcc-9.5.0/host-x86_64-pc-linux-gnu/gcc/as" "LD=/gcc-9.5.0/host-x86_64-pc-linux-gnu/gcc/collect-ld" "LIBCFLAGS=-g -O2" "NM=/gcc-9.5.0/host-x86_64-pc-linux-gnu/gcc/nm" "PICFLAG=" "RANLIB=ranlib" "DESTDIR=" DO=all multi-do # make
make[4]: Leaving directory '/gcc-9.5.0/x86_64-pc-linux-gnu/libsanitizer'
make[3]: Leaving directory '/gcc-9.5.0/x86_64-pc-linux-gnu/libsanitizer'
make[2]: Leaving directory '/gcc-9.5.0/x86_64-pc-linux-gnu/libsanitizer'
make[1]: Leaving directory '/gcc-9.5.0'
[root@cdw gcc-9.5.0]#
#### make 수행 후 output
make[4]: Entering directory '/usr/local/gcc-9.5.0/x86_64-pc-linux-gnu/libatomic/testsuite'
make[4]: Nothing to be done for 'all'.
make[4]: Leaving directory '/usr/local/gcc-9.5.0/x86_64-pc-linux-gnu/libatomic/testsuite'
make[4]: Entering directory '/usr/local/gcc-9.5.0/x86_64-pc-linux-gnu/libatomic'
Makefile:867: warning: overriding recipe for target 'all-multi'
Makefile:861: warning: ignoring old recipe for target 'all-multi'
true DO=all multi-do # make
make[4]: Leaving directory '/usr/local/gcc-9.5.0/x86_64-pc-linux-gnu/libatomic'
make[3]: Leaving directory '/usr/local/gcc-9.5.0/x86_64-pc-linux-gnu/libatomic'
make[2]: Leaving directory '/usr/local/gcc-9.5.0/x86_64-pc-linux-gnu/libatomic'
make[1]: Leaving directory '/usr/local/gcc-9.5.0'
[root@scdw gcc-9.5.0]#
#### make install 수행 후 output
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/usr/local/gcc-9.5.0/x86_64-pc-linux-gnu/libatomic'
make[3]: Leaving directory '/usr/local/gcc-9.5.0/x86_64-pc-linux-gnu/libatomic'
make[2]: Leaving directory '/usr/local/gcc-9.5.0/x86_64-pc-linux-gnu/libatomic'
make[1]: Leaving directory '/usr/local/gcc-9.5.0'
[root@scdw gcc-9.5.0]#
4. 주의 및 기타 사항
1) gcc 빌드, TPCDS 컴파일 후 gcc 파일명 변경
- PATH의 순위가 /usr/local/bin가 /usr/bin 보다 상위에 있기 때문에 Rockey 9.5 GCC가 변경되므로
/usr/local/bin/gcc를 gcc-9으로 파일명 변경
- gcc 버전 확인 - 반드시 세션 종료 후 재접속 필요
2) TPCDS 컴파일 이후 TPCDS 실행 환경에 다시 컴파일 하지 않도록 파라미터 수정
- TPC-DS/tpcds_variables.sh의 파일에서 true를 false로 변경하면 재 컴파일 하지 않음.
export RUN_COMPILE_TPCDS="true" => export RUN_COMPILE_TPCDS="false"
3) 경로별 버전 확인
[root@cdw ~]# /usr/bin/gcc --version
gcc (GCC) 11.5.0 20240719 (Red Hat 11.5.0-5)
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
## TPCDS 컴파일 도중
[root@cdw ~]# /usr/local/bin/gcc --version
gcc-9 (GCC) 9.5.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
## TPCDS 컴파일 이후 파일명 변경
[root@cdw ~]# mv /usr/local/bin/gcc /usr/local/bin/gcc-9
[root@cdw ~]# /usr/local/bin/gcc-9 --version
gcc-9 (GCC) 9.5.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2025년 2월 16일 일요일
Greenplum 제품 알람 공지 수신
Greenplum Product Notifications
* Critical Alerts - 제품 작동에 중요하고 고객 환경에 큰 영향을 미치거나, 많은 고객에게 부정적인 영향을 미칠 수 있는 큰 영향 및/또는 광범위한 소프트웨어 문제.
* Product Advisories - 하나 이상의 고객 환경에서 제품 작동에 영향을 미치는 것으로 확인된 보통 또는 낮은 영향의 비전반적인 소프트웨어 문제입니다.
* Release Announcements - Product lifecycle 공지 (GA, EOL, EOS, compatibility matrix, feature releases)
* Security Advisories - 잠재적인 보안 위험, 취약성 및 사용 가능한 해결 방법
* Legal Notices
Greenplum Product Notifications 수신 설정 방법
* https://knowledge.broadcom.com/external/article/142615/subscribing-to-broadcom-product-notifica.html
Greenplum Product Notifications 수신 설정 후 화면
- Greenplum으로 검색 후 개별 항목에 대해서 클릭
- 주의 : Product All에서 선택할 경우 모든 Broadcom 제품을 선택하는 것과 동일하기 때문에 주의 필요
Greenplum Ghost Index
Greenplum 7.6+에서 Ghost Index (Implied index)를 지원합니다. 1. Ghost Index 개념 - 컬럼 압축테이블(AO/CO)에 blockdirectory 옵션을 적용하여, 인덱스가 없더라도 Block...
-
1. 데이터 분산 각 세그먼트 / 노드별 데이터 분산이 성능에 가장 중요 . 분산키는 명시적으로 정의 (ex, distributed by ( 컬럼 1)) PK, UK 있을 경우 : PK/UK 컬럼 중 분산도...
-
1. 테이블 & 파티션 테이블 1) Data Type - Greenplum 의 Character Length 는 Byte 수가 아닌 Character ...
-
1. Greenplum 소개 Greenplum은 대용량 분석 작업에 최적화된 병렬처리(MPP) 기반의 오픈소스 데이터 플랫폼입니다. Greenplum 처음 프로젝트에서는 데이터웨어하우스를 목적으로 시작되었습니다. 국내 시장에서 ...