분류 전체보기 92

mysql 참고용 함수 정리..

RANK() 1 2 3 4 5 5 5 5 8중복된 값이 있는 경우 해당 값에 동일한 순위가 할당되고 후속 순위는 건너뜁니다.RANK() OVER (PARTITION BY department ORDER BY salary DESC) DENSE_RANK() 1 2 3 4 5 5 5 5 6중복이 있는 경우 순위를 건너뛰지 않습니다DENSE_RANK() OVER (PARTITION BY department ORDER BY salary DESC) ROW_NUMBER() 1 2 3 4 5 6 7 8동점을 고려하지 않고 단순히 행 번호를 순차적으로 증가ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) STDDEV 표준편자VARIANCE 평균과의 차이 제..

카테고리 없음 2024.07.18

PostgreSQL의 VACUUM 및 MVCC 이해

PostgreSQL은 데이터 일관성을 관리하고 성능을 최적화하기 위해 MVCC(다중 버전 동시성 제어) 및 VACUUM이라는 두 가지 필수 메커니즘을 사용합니다. 이러한 메커니즘을 자세히 살펴보고 메커니즘이 작동하는 방식과 강력한 데이터베이스 시스템을 유지하는 데 중요한 이유를 알아보자!다중 버전 동시성 제어(MVCC)MVCC는 데이터베이스 테이블을 잠그지 않고 동시 트랜잭션을 관리하는 데 사용되는 데이터베이스 기술이며,이는 읽기 및 쓰기 작업이 동시에 발생할 수 있어 각 트랜잭션에 대한 데이터에 대한 일관된 보기를 제공할 수 있음을 의미.MVCC 작동 방식트랜잭션 격리: 각 트랜잭션은 특정 시점의 데이터베이스 스냅샷을 확인합니다. 이렇게 하면 한 트랜잭션의 변경 사항이 커밋될 때까지 다른 트랜잭션에 표..

DBA/Postgresql 2024.06.25

DB 내의 모든 table 들에 대해 각 relation ID 별로 block hit/read 통계 정보 확인 쿼

POSTGRESQL 15 버전대에서 사용 가능한 통계정보 확인하는 쿼리. SELECT c.oid AS relid, n.nspname AS schemaname, c.relname, pg_stat_get_blocks_fetched(c.oid) - pg_stat_get_blocks_hit(c.oid) AS heap_blks_read, pg_stat_get_blocks_hit(c.oid) AS heap_blks_hit, sum(pg_stat_get_blocks_fetched(i.indexrelid) - pg_stat_get_blocks_hit(i.indexrelid))::bigint AS idx_blks_read, sum(pg_stat_get_blocks_hit..

DBA/Postgresql 2024.06.25

암호화 extension - pgcrypto

pgcrypto : PostgreSQL에서 지원하는 암복호화 기능 지원 Extension   1)  설치 가능한 extension 리스트에 pgcrypto가 있는지 확인 후 create extension 수행.select * from pg_available_extensions where name='pgcrypto' ; 2) Extension 설치CREATE EXTENSION PGCRYPTO; 3) pgcrypto function 활용select pgp_sym_encrypt(암호화컬럼, 'TEST_EXTEN') from 테이블-- 'TEST_EXTEN' 부분은 사용자가 임의로 지정하는 것으로 암복호화 시 키워드가 됨.-- 이미 생성된 테이블에 암호화가 필요한 경우 위 sql을 이용해 update하면 됨...

DBA/Postgresql 2024.06.11

PostgreSQL 제약 조건

데이터 타입은 테이블에 데이터의 종류로 저장될 수 있다. SQL은 컬럼과 테이블에 제약 조건을 정의할 수 있다. 만약, 제약 조건에 맞지않는 데이터를 저장하려고 할 때 에러가 발생하게 된다. 제약 조건(Constraint)은 데이터의 무결성을 지키기 위해 제한된 조건을 말한다. 제약 조건에는 몇 가지 종류가 있으며 지원하는 수준도 DBMS에 따라 조금씩 다르다. 이 페이지는 PostgreSQL를 기준으로 제약 조건을 설명할 것이다. 제약 조건의 종류Check ConstraintsNot-Null ConstraintsUnique ConstraintsPrimary KeysForeign KeysCheck ConstraintsCheck Constraints는 가장 일반적인 제약 조건이다. Check Constra..

DBA/Postgresql 2024.05.03

Postgresql 테이블 파티셔닝 (Table Partitioning)

개요1) 서비스가 점점 커지고 Storage에 저장되는 데이터의 규모가 커짐에 따라, 기존에 사용하던 Stroage의 한계와 성능의 저하가 야기됨.  - 논리적인 Element (Tuple) 들을 다수의 Entity (Table)로 쪼개는 행위를 Table partitioning이라 하며, 즉 큰 Table이나 Index를 관리하기 쉬운 Partition이라는 작은 단위로 물리적 분할하는 것을 의미한다.  - 파티셔닝은 물리적인 데이터 분할이 발생해도, 논리적 주소 (Table)은 변경되지 않기 때문에 Application이나 유저는 이를 인식하지 못한다.2) Postgresql의 경우, 하나의 Table이 File로 저장되며, Table의 크기가 1GB가 될때마다 Segmentation되어 분할된다. ..

DBA/Postgresql 2024.05.03

PostgreSQL 업그레이드 방법

pg_dumpall을 통한 데이터 업그레이드: 해당 방법은 PostgreSQL에서 기본적으로 제공하는 명령어로, 아주 간단하고 직관적인 업그레이드 진행합니다.  클러스터에 있는 모든 데이터들을 SQL 구문으로 변환하여 표준출력(stdout)으로 내보냅니다. 업그레이드  방법은 새로운 버전을 설치하기 전에pg_dumpall로 모든 데이터들을 백업합니다.$ pg_dumpall -U postgres > dump.sql현재  작업하던 디렉토리에 dump.sql 이라는 이름의 파일이 만들어 집니다.백업하는 경우 데이터베이스가 업데이트되고 있는지 확인하십시오. 백업의 무결성에는 영향을 미지치지 않지만 변경된 데이터는 포함되지 않습니다.  이전 버전 종료$ /etc/init.d/postgresql stop[ ok..

DBA/Postgresql 2024.05.03

Postgresql Log 설정 방법

Log 관련 설정 및 주요 옵션 설명 설정설명옵션Restart 필요 여부log_destinationLog의 출력형태.stderr csvlog syslog eventlog log_directoryLog 파일이 쌓일 경로를 지정한다[경로] log_file_modeLog파일의 권한을 지정한다.[권한] log_filenameLog파일의 이름을 지정한다. ISO파입의 Timestamp 형식을 지원한다.(예: %Y-%m-%d_%H%M%S)[파일명] log_line_prefix각 로그 한줄마다 말머리에 찍힐 Prefix  log_min_duration_statementSlowLog를 찍을 log의 duration  log_min_error_statementErrorLog의 Level  log_min_messagesA..

DBA/Postgresql 2024.05.03

Postgresql Replication 방식의 차이 (Streaming Replication vs Log shipping Replication)

Postgresql의 Replication 방식1) Streaming Replication - Streaming Replication은 Master/Slave간 TCP/IP 연결을 통해 WAL에 기록되는 변경점을 실시간으로 전송하는것이다. - Master Database는 자체적으로 WAL sender라는 프로세스를 기동시키며, WAL에 기록되는 부분을 실시간으로 읽어 Slave서버에 전송한다 (기본적으로 WAL은 /pg_xlog 라는 폴더에 기록된다)2) Log shipping Replication - Log-shipping replication은 WAL에 기록되는 모든 내용을 Archive File로 남기며, 해당 Archive File을 Slave 서버로 전송한다. - 해당 Replication은 ..

DBA/Postgresql 2024.05.03

wal_log_hint에 대한 테스트

WAL_LOG_HINT가 설정되지 않았을때의 pg_rewind 테스트g_rewind를 사용하기 위해서는 Target Database (Failover 되기전의 Master 서버였던 서버, Old Master)에서 wal_log_hint 옵션이 활성화 되어 있어야한다.만약 rewind시 활성화가 되어 있지 않다면 다음과 같은 에러메세지를 출력한다postgres@VS1-REPL-TEST-001:~$ /usr/lib/postgresql/12/bin/pg_rewind --source-server='host=10.**.***.** port=5432 user=TEST1 password=! dbname=test' --target-pgdata=/var/lib/postgresql/12/main -Ppg_rewind: c..

DBA/Postgresql 2024.05.03