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

PostgreSQL 7

[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] pg_dump 사용법 & 복구 절차

pg_dump 여러 데이터 센터에 걸쳐 복제 클러스터를 구축할 수 있지만, 우발적인 DELETE DROP 후에는 백업만이 해결책 이중화 구성이 백업을 대체할 수 없음. # 논리적(Logical) 백업 [1] pg_dump 사용 [2] 기본적으로 일반 텍스트 파일에 저장하지만, 압축된 tar파일로도 생성 할 수 있음 [3] 이 백업은 psql과 pg_restore를 사용하여 복원 ( SQL 내용을 쉽게 추출할 수 있음 ) [4] pg_dump --help pg_dump [OPTION] ... [DBNAME] g_dump dumps a database as a text file or to other formats. Usage: pg_dump [OPTION]... [DBNAME] General options:..

PostgreSQL 2023.04.03

Clustering 란?

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

Database 2022.09.26

[PostgreSQL] connection to server on socket /tmp/.s.pgsql.5432 failed connection refused 에러 해결법

PostgreSQL 을 사용하려 DB에 접속을 시도하던 도중 위와 같은 에러가 발생하였다. psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed 와 같은 문구처럼 PostgreSQL 의 local server가 실행되지 않았다 다양한 이유가 있지만 대부분 내부 프로세스 충돌(강제 종료,시스템 오류 등)로 인해 서버 오류발생으로 인한 에러로 파악되고 있다. 그래서 DB 서버 상태를 확인후 재접속을 시도하였다. 위와 같이 DB 서버가 작동되지 않았다 다음과같이 서버를 재작동 하였다. 결과는 성공적으로 서버가 재실행되었고 DB에 접속되었다 !!

PostgreSQL 2022.09.23

Vaccum 란?

MVCC 로 인해 수많은 row가 쌓임으로써 디스크 I/O 및 성능저하와 같은 불편함이 생길 수 있다. ​ 이와같이 불필요한 row에 대해서 어떻게 처리할까? ​ Vaccum (진공청소기 ) PostgreSQL의 쓰레기 데이터를 정리 (디스크 조각 모음) ​ ​ # 필요성 # ○ 데이터는 물리적으로 디스크에 저장되고 읽어서 보여주는데, 데이터를 갱신 및 삭제시에도 기존 정보가 그대로 남아있다. 즉, 갱신된 데이터가 추가됨으로써 용량이 증가한다. ​ ​ ○ Why? MVCC 구현에 따른 튜플로 인해 즉, 트랜잭션을 사용하기위해 기존 데이터를 변경하지않고 보관한다. 결국 디스크 I/O로 인해 성능 저하가 나타남. ​ 하지만 !!! Vaccum을 실행하면 불필요한(기존) 데이터가 정리됩니다 !!! ​ ​ # ..

PostgreSQL 2022.09.22

MVCC 란?

데이터베이스에는 많은 사용자들이 동시에 접근할 수 있다. 또한, 여러 사용자가 데이터를 변경할 수 있고 동시에 읽을 수도 있다. ​ 이때 실시간으로 변경되는 데이터들은 어떻게 처리할까?? ​ MVCC (Multi-Version Concurrency Control) 다중 버전 동시성 제어 ​ ​ 동시에 여러 개의 데이터 버전을 제공할 수 있는 기법 ​ 최신상태의 데이터를 [현재 버전], 변경 이전의 데이터를 [이전 버전]을 의미한다. ​ 단, 두개의 버전을 동일한 테이블 내에서 보관함으로써 불편함과 공간의 비효율성 발생 ​ 이에 모아둔 데이터를 Vaccum 작업을 통해 정리한다. ​ ​ 쿼리가 수행한 시점에서 데이터를 읽을 수 있는 기능 XID가 생성된다. ​ 이를 통해, 읽기와 쓰기 작업 간의 블로킹 현..

PostgreSQL 2022.09.22