[DB] POSTGRESQL

Postgresql 에서 슬로우 쿼리 조회 방법 1. 슬로우 쿼리 발생시 로그 남기기 2. 쿼리 실행계획 로그에 남기기 3. 쿼리 실행 통계 확인 1. 슬로우 쿼리가 발생하면 로그 남기기 쿼리 시간이 어느정도 느려지면, 쿼리 실행문을 로그에 남기기 위해 postgresql.conf에 설정값 추가한다. log_min_duration_statement = 5000 그리고 config를 reload 해주면 된다. SELECT pg_reload_conf(); pg_reload_conf ---------------- t (1 row) 특정 데이터베이스, 특정 유저 권한에서 발생한 슬로우쿼리만 모니터링 할 수도 있다. ALTER DATABASE test SET log_min_duration_statement = 5..
PostgreSQL 배열형 컬럼 선언 - 데이터 타입 선언 시 ' [] '만 붙이면 배열형 컬럼이 됨 ● 배열형 컬럼 생성 CREATE TABLE member( id serial PRIMARY KEY, name varchar(20), age integer, hobby varchar(100)[] -- 배열형 컬럼 ); ● 배열형 컬럼에 데이터 추가하기 -- 배열형 데이터를 {} 안에 ","로 구분해서 입력한다. INSERT INTO member (name, age, hobby) VALUES('kim', 10, '{book, music}'); -- 데이터를 하나만 넣을 때는 위와 같이 쓴다. INSERT INTO member (name, age, hobby) VALUES('lee', 12, '{game}')..
● 준비 (단일 트랜잭션) (1) 새 파티션 테이블 생성 (2) 기존 테이블명 변경 (3) 기존 테이블과 이름이 같은 뷰 생성. -> 새 파티션 테이블과 이름이 바뀐 옛 일반 테이블을 모두 함께 조회하는 뷰 (4) 새로 생성한 뷰에 insert, delete rule 추가 (5) update에서 사용할 트리거 함수 생성, 새로만든 뷰에 트리거 지정 ● 자료 이동 (단일 트랜잭션) (1) 기본키 단위로 하나씩 모든 자료에 대해서 update 구문을 실행 ● 뒷정리 (1) 뷰 삭제 (2) 파티션 테이블을 뷰 이름 변경 다음은 뷰에 insert, delete 룰과 update 트리거를 지정하는 작업을 pgbench 테이블을 대상으로 한 것입니다. -- 새 해쉬 파티션 하위 테이블 생성 BEGIN; CREATE..
1. 확장 모듈 설치 create extension pgcrypto; enterprisedb 계정으로 해당 모듈을 설치할 스키마 선택 후 실행. 2. Raw encryption functions convert_to/convert_from : 문자열 변환/복원 encode/decode : 16진수 인코딩/디코딩 encrypt/decrypt : 암호화/복호화 예제) -> ENC_KEY는 실제 사용할 암호화KEY로 대체해야 함. * 암호화 : utf8로 변환한 후, 암호화키로 'aes'알고리즘을 사용하여 암호화한 후, 그 값을 16진수(hex)로 encoding함 select encode(encrypt(convert_to('홍길동','utf8'),'ENC_KEY','aes'),'hex'); --utf8, ae..
트리거 생성 후, 소스코드를 확인하기 위한 쿼리. 1. SELECT tgrelid FROM pg_trigger WHERE tgname=; ex) SELECT tgrelid FROM pg_trigger WHERE tgname='trg_name'; 2. SELECT oid,relname FROM pg_class WHERE oid=; ex) SELECT oid,relname FROM pg_class WHERE oid=49826; 3. SELECT prosrc FROM pg_proc WHERE proname = ; ex) SELECT prosrc FROM pg_proc WHERE proname = 'function name'; 4. SELECT event_object_table,trigger_name,event..
인덱스(Index) 혹은 색인은 테이블 설계시 많이 고민하는 부분이고 성능 향상에 많은 도움을 주고 있지만 프로그램의 설계 변경 혹은 기능 개선등 여러 상황에 따라 사용하지 않는 인덱스가 발생하게 됩니다. 여러 상황 때문에 현재는 사용하지 않는 인덱스를 찾아보기 위한 간략한 정리 내용입니다. 인덱스 구조 이해를 위한 예시 인덱스는 지정한 컬럼에 대한 매핑 정보를 가지고 있습니다. 사용하지 않는 인덱스를 찾아봐야되는 이유 보통 쿼리 튜닝을 위해 운영중인 데이터베이스에서 EXPLAIN 명령어를 많이 사용하고 필요시 인덱스 추가는 생기지만 삭제는 거의 없을거라 생각됩니다. 만약 그렇다면 극단적으로 생각했을때 오래된 프로그램 일 수록 추가된 인덱스는 많지만 삭제된 인덱스가 없다는건 불필요한 인덱스도 많을수 있다..
mewoni
'[DB] POSTGRESQL' 카테고리의 글 목록 (2 Page)