DB

PostgreSQL 의 XID PostgreSQL 에서 하나의 튜플은 xmin, xmax 의 2개의 트랜잭션 ID 를 가집니다. Tuple 이 생성된 시점은 xmin / Tuple 이 삭제되는 (이전의 값) 인 경우는 xmax 로 TID 를 저장합니다. 이 때 다른 세션에서 해당 데이터를 조회 시 사용되는 트랜잭션ID 가 xmin 과 xmax 사이라면 보여지고, 그렇지 않다면 보여지지 않도록 합니다. PostgreSQL 의 XID 제약조건 TID 는 40억개를 사용할 수 있으며 20억개는 older , 20억개는 newer 로 사용됩니다. 40억개가 다 사용되면 다시 1부터 시작됩니다. 여기서 중요한 문제가 발생합니다. 트랜잭션 ID 가 40억에서 새로운 데이터가 적재되어 xmin 이 40억인 최신의 데..
Vacuum 사전적의미로 청소, 진공, 공백을 의미합니다. PostgreSQL 에서 Vacuum 은 MVCC 에 의해 현재 사용되지 않는 이전의 저장된 값들을 정리합니다. Vacuum 을 하는 이유 PostgreSQL 은 MVCC 에 의해 이전의 값들이 갱신되거나 삭제되더라도 새로운 데이터로 추가(갱신 경우)하고 기존의 데이터는 정리하지 않고 삭제표기만 남겨둡니다. 이렇게 사용하지 않는 값들로 인해 파일 사이즈가 커져 성능저하가 발생하게 되는걸 방지합니다. Transaction ID 가 겹침으로 인해 자료의 손실이 발생하는 것을 방지합니다. 이전의 데이터가 정리되면서 실행계획에서 사용할 통계치 정보를 최신으로 갱신해 줍니다. Visibility MAP ( VM = Dead Tuple 의 존재 여부를 표기..
MVCC 란 ( Multi Version Concurrency Control ) 하나의 트랜잭션에서 데이터에 접근하는 경우 데이터의 다중버전 상태 중 보장되는 버전에 맞는 값을 반환하여 처리하는 방법을 의미합니다. 데이터의 다중버전 상태 아래의 단계를 설명하겠습니다. Step 1. a 에는 30이라는 데이터가 저장되어 있습니다. Step 3. 트랜잭션1에서 a 는 50 으로 데이터를 갱신했습니다. 이 값을 commit 하기 전입니다. Step 4. 트랜잭션2에서 a 는 30 으로 데이터가 조회됩니다. 트랜잭션1에서 데이터를 갱신했지만, 트랜잭션 2는 여전히 이전의 값을 조회하고 있습니다. 어떻게 조회할 수 있는것일까요? 데이터를 다중버전 상태로 유지하고 있어 commit 전까지는 이전의 값을 undo 영..
PostgreSQL 백업 방법 PostgreSQL 은 장애시 복구를 위해 3가지 백업방법이 있습니다. 3가지 방법은 SQL 덤프 / 파일 시스템 기반 백업 / 아카이브 모드 백업입니다. 이 중 아카이브 모드 백업에 대해 다뤄보겠습니다. 아카이브 모드 백업 PostgreSQL 은 미리쓰기기로그 (WAL, Write ahead log) 을 pg_xlog 디렉터리에서 관리합니다. 이 로그는 데이터베이스에 대한 모든 조작 기록을 보관하고 있어, 서버가 갑자기 비정상적으로 종료된경우 데이터파일에 적용하지 못한 작업은 이 로그파일을 읽어서 복구할 수 있습니다. 이 로그를 다른 서버로 보내, 이 로그의 내용을 그대로 실행하여 원본 서버와 똑같이 만들수 있습니다. 또한 특정시점 까지만 실행하도록 하여, 특정시점으로 복..
PostgreSQL 백업 방법 PostgreSQL 은 장애시 복구를 위해 3가지 백업방법이 있습니다. 3가지 방법은 SQL 덤프 / 파일 시스템 기반 백업 / 아카이브 모드 백업입니다. 이 중 파일 시스템 기반 백업에 대해 다뤄보겠습니다. 파일시스템 백업 방법 말그대로 데이터파일을 압축해서 백업하는 방식입니다. 백업 전 PostgreSQL 을 중지해야 합니다. 1 tar -cvzf PostgreSQL.tar.gz /var/lib/postgresql/10/main cs 파일시스템 복원 방법 압축한 파일을 PostgreSQL 데이터경로에 풀어줍니다. 이 후 DB 를 재구동합니다. 버전과 아키텍처에 영향을 받습니다. 만약 복원경로가 변경되는 경우에는 pg_ctl 명령어를 사용하여 기본 디렉터리를 변경해 줍니다..
PostgreSQL 백업 방법 PostgreSQL 은 장애시 복구를 위해 3가지 백업방법이 있습니다. 3가지 방법은 SQL 덤프 / 파일 시스템 기반 백업 / 아카이브 모드 백업입니다. 이 중 SQL 덤프에 대해 다뤄보겠습니다. SQL 덤프 백업방법 이 백업방식은 pg_dump 명령어로 진행합니다. pg_dump 를 실행하면 DB_NAME 데이터베이스에 생성된 객체와 데이터들을 SQL 구문 텍스트 형식으로 백업합니다. 기본적으로 표준출력이기 때문에 리다이렉션 기능을 사용하여 파일로 저장합니다. 1 $ pg_dump DB_NAME > postgres_DB_NAME_bak.sql cs pg_dump 에서 제공하는 연결 옵션 옵션을 보면 일반 클라이언트와 동일하게 원격으로 접속할 수 있는 옵션을 제공하고 있습..
꽁담
'DB' 태그의 글 목록