DB 22

Unlogged Table 정의

1. UNLOGGED TABLE의 정의UNLOGGED TABLE은 말 그대로 로그를 남기지 않는 테이블이다.일반 테이블은 데이터를 수정할 때마다 WAL 로그를 기록하여 장애 복구, 복제 등에 활용되지만,UNLOGGED 테이블은 WAL을 생략하고 디스크에만 데이터를 직접 저장한다.특징 요약WAL 기록하지 않음 (복구 불가)성능빠름 (WAL 생략으로 I/O 감소)장애 시 복구불가 (DB 재시작 시 데이터 유실)분산 및 병렬 처리Greenplum에서는 segment별 분산 처리 가능인덱스, 제약 조건일반 테이블처럼 사용 가능외부 테이블과 호환INSERT 대상 등으로 사용 가능사용 방법테이블 생성 예시-- 일반 테이블CREATE TABLE normal_table ( id SERIAL, name TEX..

DB/PostgreSQL 2025.04.22

External table (PXF 기반) 에서 데이터 읽어올 때 - 메모리. I/O 문제

PXF 프레임워크를 사용해서 External table 생성하는 경우 PXF 설명 : https://cool-ri.tistory.com/6 Greenplum PXFGreenplum PXF : Greenplum이 아닌 외부시스템에서 가지고 있는 DATA 를 Greenplum 으로 Load 할 수 있는 프레임워크 외부시스템 DATA는 ORACLE, Mariadb 처럼 RDBMS의 테이블이 될 수 있으며 하둡의 HDFS, 파일시스cool-ri.tistory.com 디스크에 저장된 deflate/csv 파일을 즉석에서 읽어서 GPDB 로 스트리밍처럼 처리함.-> 테이블처럼 보이지만 실제로는 파일을 직접 읽어옴 항목External Table내부 Table (heap/append-optimized)데이터 위치외부..

DB/PostgreSQL 2025.04.21

쿼리 튜닝 - 플랜 분석 예시 (memory 부족)

쿼리redistribute motion 1:48 (slice4; segments: 1) (cost=0.00...)(actual time=.. rows=4530430 loops=1)  hash key: "outer".?column?    ->Result (..)      ->WindowAgg (cost..)         Partition by: (CASHE WHEN ..)         -> Sort (..             Sort Key: (CASE ..             Sort Method: external sort Disk: 2059808kB           -> Result..             ->GroupAggregate...                 ->Hash JOin ..

DB/PostgreSQL 2025.02.18

cgroup

**cgroup(Control Groups)**은 Linux 커널의 기능 중 하나로, 프로세스 그룹별로 시스템 자원을 제한하고, 우선순위를 지정하며, 관리할 수 있게 해줍니다. cgroup은 특히 컨테이너화된 환경(Docker, Kubernetes)이나 리소스 관리가 중요한 환경(Greenplum Database 등)에서 자주 사용됩니다.cgroup의 주요 기능자원 제한(Resource Limiting)프로세스 그룹이 사용할 수 있는 CPU, 메모리, 블록 I/O, 네트워크 대역폭 등을 제한할 수 있습니다.예를 들어, 특정 프로세스가 사용할 수 있는 최대 메모리 용량을 설정하거나, CPU 사용률을 제한할 수 있습니다.자원 계측(Resource Accounting)프로세스 그룹별로 자원 사용량(CPU 시간..

DB/PostgreSQL 2024.11.18

GPDB - Query Plan 예시

주문이 2024년 1월에 이루어지고 총 금액이 $100 이상인 고객의 이름과 해당 기간의 총 주문 금액을 계산하는 쿼리이다.EXPLAIN ANALYZESELECT c.customer_name, SUM(oi.quantity * oi.price) AS total_amountFROM customers cJOIN orders o ON c.customer_id = o.customer_idJOIN order_items oi ON o.order_id = oi.order_idWHERE o.order_date BETWEEN '2024-01-01' AND '2024-01-31'GROUP BY c.customer_nameHAVING SUM(oi.quantity * oi.price) >= 100; GroupAggregate ..

DB/PostgreSQL 2024.10.01

GPDB - motion 정의

motion데이터베이스의 여러 세그먼트 간에 데이터를 이동시키는 작업을 나타낸다. motion 종류Broadcast motion테이블의 데이터를 모든 세그먼트에 복사하는 작업이다.이 방식은 일반적으로 작은 테이블과 큰 테이블을 조인할 때 사용된다. 작은 테이블의 모든 데이터를 모든 세그먼트로 보내서 큰 테이블의 각 세그먼트에서 조인을 수행할 수 있도록 한다.주로 데이터 크기가 작고 모든 세그먼트에서 데이터를 필요로 할 때 효율적이다.Redistribute motion데이터를 지정된 분산 키에 따라 세그먼트 간에 재분배하는 작업이다.주로 조인 키가 두 테이블의 분산 키와 일치하지 않을 때 발생한다. 데이터를 조인 키 기준으로 재분배하여 동일한 세그먼트에 조인할 데이터를 모으는 역할을 한다.이 작업은 많은 ..

DB/PostgreSQL 2024.09.12

GPDB 분산키 Randomly vs 특정 컬럼

분산 키를 randomly 로 설정했을 때 (랜덤 분산) 특징: 데이터를 랜덤하게 분산시키는 방식이다.특정 열을 기준으로 분산하지 않으므로, 모든 세그먼트에 데이터가 고르게 분산될 가능성이 높다.해시 분산보다 더 균등한 데이터 분산을 기대할 수 있다.적용 상황:데이터 균등 분산: 데이터의 값이 불균등하거나, 특정 컬럼에 편중된 값이 있는 경우 randomly 분산은 세그먼트 간에 데이터와 부하를 고르게 나누는 데 유리하다.쿼리 패턴이 랜덤한 경우: 쿼리가 특정 컬럼을 자주 필터링하지 않거나, 특정 컬럼을 기준으로 조인이 자주 일어나지 않는 경우에 적합하다.분산 키를 지정하기 어려운 경우: 테이블에 명확하게 분산의 기준이 되는 컬럼이 없거나, 데이터의 자연스러운 분포를 예측하기 어려운 경우에 유용하다.쓰기..

DB/PostgreSQL 2024.09.12

Driver Setting

Driver 설정을 해야하는 이유?데이터베이스 클라이언트 애플리케이션(DBeaver와 같은 도구)이 특정 데이터베이스와 통신할 수 있도록 필요한 구성 정보를 제공하는 과정이다. 드라이버 설정을 통해 DBeaver가 데이터베이스와의 연결을 설정하고, SQL 명령을 실행하며, 데이터를 효율적으로 교환할 수 있도록 한다.  데이터베이스와의 통신을 위한 프로토콜 정의:각 데이터베이스 관리 시스템(DBMS)은 고유한 프로토콜과 통신 방식을 사용한다. 예를 들어, MySQL과 PostgreSQL은 서로 다른 프로토콜과 명령 세트를 사용한다.드라이버는 이러한 프로토콜을 이해하고, 애플리케이션의 요청을 데이터베이스가 이해할 수 있는 형식으로 변환하는 역할을 한다. 드라이버 설정은 DBeaver가 사용해야 할 정확한 드..

DB 2024.09.01

PostgreSQL 로그인 권한 - 연결 실패

처음에 DB 연결 시 커넥션 실패 Logrole "siwon" is not permitted to log in 관리자 계정으로 접속 후 rolcanlogin 확인 SELECT rolname, rolcanlogin FROM pg_roles WHERE rolname = 'siwon'; rolcanlogin = false 값으로 나온다.PostgreSQL 에서 계정을 생성할 때, 역할이 있어도 로그인 권한이 없는 경우이다. 슈퍼유저로 접속 후 로그인 권한을 부여한다.ALTER ROLE siwon LOGIN; 다시 DB 연결하면 성공

DB/PostgreSQL 2024.08.31