긍정적인 사고와 행동으로 선한 영향력을 줄 수 있도록

postgres 7

[PostgreSQL] Clustering 란 ?

Clustering 일반적으로 DB 구조를 보면, DB 서버와 스토리지가 하나씩 구성되어 있다. ​ 만약 서버가 제대로 동작하지 않으면 먹통이 된다. ​ 실시간으로 돌아가면서 데이터 손실을 방지하기 위해서 서버를 여러개로 구성 하는 것이다. 이때, DB서버는 서로 다른 인스턴스에서 동작한다. 이 경우 서버 두 대를 하나로 묶어 운영한다. ​ 두 서버 모두 Active 상태이다. 따라서 서버 한 대가 죽더라도 하나가 동작하고 있고 그동안 복구를 하여 서비스 중단이 없도록 할 수 있다. 또한, 하나의 DB 서버에 가해지던 부하도 나눠짐으로써 CPU와 Memory 부하도 줄어들게 되어 성능 및 유지보수가 향상된다. ​ 다만, 여러 개의 서버가 하나의 스토리지를 공유함으로써 병목현상이 발생한다. 이를 해결하기 ..

PostgreSQL 2023.04.19

[PostgreSQL] Unlogged Table 이란 ?

Unlogged Table A. UNLOGGED Table 이란? ​ 서버 충돌 후 데이터 일관성 또는 정합성이 문제가 되지 않거나 대용량 데이터 쓰기를 위해 당분간 데이터를 복구할 가능성이 없는 경우에 한해 성능 향상이 필요한 일회용 테이블을 처리하려는 경우, Unlogged Table 이 적합합니다. Unlogged Table은 2011 년 PostgreSQL 9.1에 도입되었으며 v9.5부터 alter 구문을 통하여 Unlogged Table, Logged Table 로 전환 사용이 가능합니다. WAL (Write-Ahead Logging ) 시스템은 Postgres를 안정적으로 만드는 주요 구성 요소입니다. WAL 은 이중화 상태일 경우 데이터 동기화에 필요하며 또한, 장애 조치를 위해 복제에 사..

PostgreSQL 2023.04.19

[PostgreSQL] 단일 사용자 모드 (single mode) 란 ?

단일 사용자 모드 ( Single Mode ) 1] 디버그 작업이나, 장애 복구 때 사용한다 2] 세션 사용자 ID를 1로 처리하며, 명령을 실행한 사용자가 슈퍼유저(관리자) 권한을 가진다. 3] 이 사용자는 다중 사용자 환경에서는 없는 사용자이며, 손상된 시스템 카탈로그를 수동으로 복구할 때 단일 사용자 모드로 실행할 수 있다. 4] 단일 사용자 모드에서는 자동 체크포인트나, 복제 같은 백그라운드 프로세스가 실행되지 않는다. [postgres@localhost data]$ postgres --help postgres is the PostgreSQL server. Usage: postgres [OPTION]... Options for single-user mode: --single selects sing..

PostgreSQL 2023.04.19

[PostgreSQL] postgres_fdw 설치 & 가이드

postgres_fdw Oracle DB-Link 처럼 물리적으로 떨어져 있는 데이터베이스를 사용하기 위한 Extension Postgresql은 DB Link 보안 취약점 타파를 위해 Oracle DB Link와 다르게 Link를 사용할 연동 테이블 별로 각각 Link 생성 전체 데이터베이스에 링크 생성 불가 extension 설치 create extension postgres_fdw; extension 조회 experdb=# \dx+ postgres_fdw Objects in extension "postgres_fdw" -[ RECORD 1 ]------+-------------------------------------------- Object description | foreign-data wra..

PostgreSQL 2023.04.12

[PostgreSQL] tablespace 란? 생성법과 개념 정리

tablespace 란 데이터베이스 객체가 파일 시스템상에서 저장되는 물리적인 공간을 의미한다. 논리적인 데이터베이스 구조나 스키마를 지정하지 않는다. PostgreSQL에서 DB는 PGDATA라는 환경변수에 지정된 디렉터리를 통째로 DB로 사용한다. 그리고 그 하위에 테이블이 파일로 생성된다. 즉 테이블스페이스를 따로 생성하지 않아도 DB에 사용자 테이블을 만들 수 있다. 기본적으로 DB로 지정된 디렉토리 전체가 하나의 기본 테이블스페이스로 인식되는 것이다. PostgreSQL 공식문서는 아래와 같이 정의하고 있다. - postgresql에서 기본으로 테이블스페이스가 생성되는 여부 * 기본적으로 pg_default, pg_global 이 생성됩니다. List of tablespaces Name | Ow..

PostgreSQL 2023.03.21

[Postgresql] general_series 함수를 이용한 더미데이터 생성

Postgres 데이터베이스에 테스트용 Dummy 데이터를 삽입해야 하는 경우가 종종 발생한다. 그때 유용하게 사용될 수 있는 기능이 " generate_series " 이다. CREATE TABLE t AS SELECT gs as idx, '테스트 문자열' || gs AS test_string, md5(random()::text) AS random_string FROM generate_series(1, 1000000) AS gs; idx | test_string | random_string -----+-----------------+---------------------------------- 1 | 테스트 문자열1 | dd338ba654774bb643ada0c58c0d1141 2 | 테스트 문자열2 ..

PostgreSQL 2023.03.20

[PostgreSQL] pgbench 를 통한 파라미터 튜닝 성능 개선 방법

pgbench 란 PostgreSQL이 기본적으로 제공하는 Benchmark Tool, 일정 패턴의 SQL 구문들을 반복 수행하여 이를 통해 얻어지는 초 당 Transaction 횟수로 성능을 평가합니다. 스크립트 파일 수정을 통해 트랜잭션의 커스터마이징이 가능합니다. 테스트 환경 OS : CentOS Linux 7.9 Memory : 2.4G CPU : 2 Core PostgreSQL Versioin : 14.5 postgres.conf : 기본값 ① test 할 임시 데이터베이스 생성 postgres =# create database [DB Name]; CREATE DATABASE ② 생성한 데이터베이스의 table 및 row 수 설정 후 생성 [postgres@localhost bin]$ pgben..

PostgreSQL 2023.03.15