DB/PostgreSQL 12

[PostgreSQL] now(), clock_timestamp(), statement_timestamp() 차이

카카오 에드센스 달려면 3개월간 글 20개는 쓰라해서 딱히 영양가..없는 짧은 글을 하루에 하나씩이라도 쓰려 한다. .. 이런거라도 누군가는 보고 도움 되겠...지? 각 DBMS에는 현재 시각을 반환하는 내장 함수 들이 있다. 오라클의 SYSDATE 라던지.. Mysql의 NOW() 라던지.. 오늘은 PostgreSQL 에서 현재 시각을 반환하는 함수 중 미세하게 다른 일부를 가져와서 소개하려 한다. 1. now() 누구나 잘 아는 now() 함수다. select now(); 해보면 현재 시각이 표시된다. 다만, now() 함수는 트랜잭션이 시작된 시각을 표시해준다. 이게 무슨말이냐.. 하면.. 하나의 트랜잭션에서는 모두 같은 시각을 반환한다는 것이다.. 아래 다른 함수를 보면 이해가 될 것이다. 2. ..

DB/PostgreSQL 2024.01.03

[PostgreSQL - DBA] PostgreSQL 관련 참고 쿼리

내가 프로젝트에서 DBA/DA 업무 수행하면서 쓰던 쿼리들 정리한 것을 올려야 겠다. DDL.. 권한.. 기타 조회성.. 일일작업 등등.. 첫번째는 기타 조회성 및 참고쿼리들이고 두번째는 일일 모니터링하던 쿼리다.(그냥 나 혼자 정리하던거니.. 참고만..) SublimeText에서 노트패드 켜놓고 ctrl+F로 찾기해서 쓰던거라 쭈우우우욱 나열만 되어있으나.. 마찬가지로 찾기해서 쓸 수는 있을 듯 하여 올린다.. 첫번째. 기타 조회성 및 참고쿼리 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 00. Lock 조회 및 kill @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ select t.relname , l.locktype , page , virtua..

DB/PostgreSQL 2024.01.02

[PostgreSQL - DBA] pg_hint_plan 설치하기 (pg_Hint 3/3)

pg_hint_plan 1탄 .. : 2023.10.13 - [DB/PostgreSQL] - [PostgreSQL - DA] PostgreSQL Hint 사용하기 (pg_Hint 1/3) [PostgreSQL - DA] PostgreSQL Hint 사용하기 (pg_Hint 1/3) 오늘은 PostgreSQL에서 힌트를 사용하는 것을 연습해보려 한다. 일단 PostgreSQL은 Hint를 사용하려면 pg_hint_plan을 Extension 해야한다. 이게 무슨말이냐.. 하면.. PostgreSQL은 외부 lib를 추가하듯이 pg_hint_plan holog.tistory.com pg_hint_plan 2탄 .. : 2023.10.25 - [DB/PostgreSQL] - [PostgreSQL - DBA] ..

DB/PostgreSQL 2023.11.06

[PostgreSQL - DBA] wsl에 PostgreSQL 설치하기(pg_dumpall로 백업하기) (pg_Hint 2/3)

부제 : PostgreSQL Hint 사용하기 - 2 https://holog.tistory.com/80 [PostgreSQL - DA] PostgreSQL Hint 사용하기 오늘은 PostgreSQL에서 힌트를 사용하는 것을 연습해보려 한다. 일단 PostgreSQL은 Hint를 사용하려면 pg_hint_plan을 Extension 해야한다. 이게 무슨말이냐.. 하면.. PostgreSQL은 외부 lib를 추가하듯이 pg_hint_plan holog.tistory.com 이전에 위에 글을 작성할때 보면 내가 로컬에 설치할 때 윈도우에 설치해서 Hint 사용에 실패했었다. 그래서 드디어 위에 글을 이어서 작성하기 위해... 힌트를 써보기 위해.. 윈도우에 wsl를 설치하여 ubuntu를 설치하고 거기에 ..

DB/PostgreSQL 2023.10.25

[PostgreSQL - DBA] 오브젝트 생성 시 기본 권한 자동 부여(alter default privileges)

DBA 프로젝트를 수행하거나, 사이드 프로젝트에서 DB 오브젝트를 관리하거나 할 때 특히 개발 단계에서는 오브젝트의 생성이 빈번하다 보니 권한을 매번 부여하는 것이 귀찮을 때가 있다. 이때 각 스키마별, 권한별, 오브젝트별 기본 권한을 자동으로 부여하게 할 수 있다. 먼저 기본 접근권한이 어떻게 되어 있는지 조회하는 방법이다. 1. psql에 접속하여 2. \ddp 입력 뭐 내가 준 옵션이 없으니 당연히 아무 것도 없을 거다. 이제 그럼 먼저 1. 계정을 생성 후 권한을 부여하고 2. 그 계정에 "테이블"에 대한 arwdDxt(SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER) 까지 줘보자. 사실 저건 그냥 ALL 권한을 주면 저렇게 7개 권한..

DB/PostgreSQL 2023.10.20

[PostgreSQL - DBA] FK Option

지금 프로젝트는 테스트 단계에 중도 투입된 프로젝트인데.. ERD가 없다.. 그래서 DA#을 이용해서 리버스 모델링을 하려는데.. 모든 테이블에 대해 FK가 하나도 없다.. 흠.. 지금 같은 팀의 DA 사수님도 중도 투입이시라 왜 FK를 빼고 작업을 한 것인지.. 의도한 것인지.. 그걸 알 수가 없다.. 물론 증권이나 은행권에 가끔 성능 관련 이슈로 FK를 제거하고 프로젝트를 하는 경우도 있다고 하는데.. RDB에서 R을 빼는게 맞는 건가 싶다.. 사실 이러한 이슈로 혹시 추후에 FK를 추가할 경우가 생길 거 같은데.. 그때 쓸 만한 옵션이나 고려할 사항들을 정리해 보려 한다. 1. 뒤늦은 FK 생성이니(이미 데이터가 있음) 혹시 모를 무결성 오류를 무시하기 위해 NO VALID 옵션으로 FK 생성하기 ..

DB/PostgreSQL 2023.10.16

[PostgreSQL - DA] PostgreSQL Hint 사용하기 (pg_Hint 1/3)

오늘은 PostgreSQL에서 힌트를 사용하는 것을 연습해보려 한다. 일단 PostgreSQL은 Hint를 사용하려면 pg_hint_plan을 Extension 해야한다. 이게 무슨말이냐.. 하면.. PostgreSQL은 외부 lib를 추가하듯이 pg_hint_plan을 추가해야만 힌트사용이 가능하다는 것이다. 일단 한번 추가해본다. create extension pg_hint_plan; 흠...? 근데 뭔 이상한 오류가 뜬다. pg_hint_plan.control 요놈이없다는 뜻인거 같은데.. 하 씨..!! https://pg-hint-plan.readthedocs.io/en/latest/#pg-hint-plan-1-6 pg_hint_plan 1.6 — pg_hint_plan documentation ..

DB/PostgreSQL 2023.10.13

[PostgreSQL - DBA] 테이블 완전 복사하기

PostgreSQL 에서 특정 테이블의 인덱스, PK,등등 모든 사항을 전체 복사하는 방법이 있다. 아주 상세한 설명은 PostgreSQL Create Table 부분에서 찾을 수 있으나.. 뭐 너무 길어서 보기도 힘들다. 일단은 참고하려면 더보기.. 더보기 https://www.postgresql.org/docs/current/sql-createtable.html 위 내용에서 내가 원하는 부분은 여기다! LIKE source_table [ like_option ... ] 이 LIKE절은 새 테이블이 모든 열 이름, 해당 데이터 유형 및 null이 아닌 제약 조건을 자동으로 복사하는 테이블을 지정합니다. 와 달리 INHERITS새 테이블과 원본 테이블은 생성이 완료된 후 완전히 분리됩니다. 원본 테이블에..

DB/PostgreSQL 2023.10.06

[PostgreSQL - DBA] Lock 걸린 테이블 조회 및 Kill

PostgreSQL DDL을 갈기다 보면 가끔 AccessShareLock 때문에 DDL이 안된다. AccessShareLock은 아래 참고. 더보기 AccessShareLock 이란? Oracle에서는 SELECT 동안 락을 잡지 않는다. 다만 SELECT 되는 동안 해당 테이블의 구조(컬럼변경, DDL 등) 를 바꾸지 못하도록 해당 테이블에 TM LOCK 을 거는데 딱히 성능에 지장을 주는 Lock이 아니다. PostgreSQL에서 TM LOCK에 해당하는 것이 AccessShareLock 이다. 성능에 지장을 주는 Lock이 아니기 때문에 크게 상관 안써도 되지만, 테스트 과정에서 DDL변경이 Block되기 때문에 Lock을 해제해줘야 한다. 따라서 지금과 같이 프로젝트를 진행 중에 DDL을 날릴 ..

DB/PostgreSQL 2023.10.04

[PostgreSQL - DA] 테이블 스키마 조회 쿼리

맨날 짜서 하다가 귀찮아서 하나 만들어 놨다. 참고 해서 계속 써야지. - 20240102 수정 with schema_column_p as ( select c.table_schema , c.table_name , obj_description((c.table_schema || '.' || c.table_name)::regclass, 'pg_class') as table_comment , c.column_name , pgd.description as column_comment , (select d.constraint_name as pk from information_schema.constraint_column_usage d join information_schema.table_constraints e on ..

DB/PostgreSQL 2023.10.04