Study/DB

    DB 계층 구조 설계 - 클로저 테이블 패턴

    계층 구조인 조직도 테이블을 설계하게 되었다. 0. 기존에 접하던 테이블 구조 테이블 하나 id 컬럼 | 부모_id 컬럼 | 기타 컬럼 계층형 쿼리 사용 프로젝트에서 자주 보던 계층형 쿼리는 한 번에 이해하기에 어렵다고 느꼈었다. 계층이 깊은 경우는 더더욱. 나는 이해하기 쉬운 코드가 좋다. 이번에 테이블 설계를 하면서 이해하기 쉬운 쿼리를 쓸 수 있는 방법이 없나 찾아봤다. 그러다 빌 카윈 Bill Karwin이라는 개발자의 아래 자료를 보게 되었다. 자료에 대한 간단한 요약과 적용한 결과(MySQL)를 공유하고자 한다. https://www.slideshare.net/billkarwin/models-for-hierarchical-data Models for hierarchical data Tree-l..

    PostgreSQL 쿼리 무한 로딩 idle in transaction 해결

    한줄 요약: pid 조회하고 select pg_cancel_backend(pid);로 세션 취소 DROP INDEX 인덱스명; 을 실행했더니 무한 로딩이 걸린다. Oracle에서 update문을 실행하다가 고생한 경험을 떠올렸다. 네트워크 연결이 불안정한 작업 환경에서 운영 DB에 커밋을 하다가 무한 대기가 걸려서 아주 많이 당황했었고 lock이 원인이란 걸 파악한 뒤 DBA에게 session kill을 요청하여 해결했었다. 그러니 우선 현재 실행 중인 프로세스의 lock 정보를 보여주는 pg_locks view를 조회해보자. Lock 정보 조회 select * from pg_locks l, pg_stat_all_tables t where l.relation = t.relid order by relati..