본문 바로가기
반응형

Database23

PostgreSQL에서 Order By가 선적용되는 슬로우 쿼리 해결책 PostgreSQL 10.x 를 사용하다보면 간혹 옵티마이저가 잘못된 판단을 할때가 있습니다. 이번 경우에는 Order By 가 선 적용되는 실행계획을 어떻게 개선할지 알아보겠습니다. 1. 문제 상황 이를 테면 아래 쿼리의 경우 보통 1~5초 정도 수행됩니다. SELECT "vouchers"."id" FROM "vouchers" AS "vouchers" WHERE "course_id" in (select "id" from "courses" WHERE ("slug" = '코딩테스트-자바-실전' AND "deleted_at" IS NULL)) AND "user_id" in (select "id" from "users" WHERE ("deleted_at" IS NULL)) AND "deleted_at" IS .. 2021. 8. 21.
(AWS Aurora) PostgreSQL에서 Lock 쿼리 확인하고 원인 종료하기 RDBMS를 사용하다보면 Lock 쿼리를 종종 만나게 되는데요. (AWS Aurora) PostgreSQL에서는 어떻게 Lock 쿼리를 모니터링하고, 처리하는지 알아보겠습니다. 기존의 온프레미스 환경에 익숙하시다면 그 방식을 그대로 선택하시면 되고, 여기서는 AWS Aurora 환경을 기반으로 진행합니다. 1. 성능 개선 도우미 설정 AWS RDS를 사용하면 성능 개선 도우미를 통한 모니터링을 지원 받을 수 있는데요. 아래와 같이 처음 RDS 생성시 혹은 수정을 통해 설정이 가능합니다. 이렇게 성능 개선 도우미를 활성화시키면 성능과 관련된 여러가지 지표들을 손쉽게 모니터링할 수 있습니다. (이번에 이야기할 Lock 쿼리 역시 성능 개선 도우미를 통해 확인이 가능하기 때문에, 이를 기반으로 설명할 예정입니.. 2021. 8. 13.
Amazon Aurora PostgreSQL 에서 pg_bigm 모듈사용하기 2021.06.17 드디어 Amazon Aurora PostgreSQL 에서 pg_bigm을 지원하게 되었습니다. release notes 기존까지는 Aurora가 11.9 / 12.4 까지만 지원해서 pg_bigm 을 쓰려면 PostgreSQL Amazon RDS 를 사용해야만 했는데요. Aurora PostgreSQL 버전이 업데이트 되면서 (11.11 / 12.6 / 13.2) 가 드디어 Aurora에서도 pg_bigm 를 쓸 수 있게 되었습니다. 그래 이번 시간에는 Amazon Aurora PostgreSQL 에서의 pg_bigm에 대해서 소개드리겠습니다. 1. 지원 대상 업데이트가 되었다고해서 모든 Aurora PostgreSQL에서 pg_bigm을 사용할 수 있는것은 아닙니다. 아래 Postg.. 2021. 8. 8.
Mac에 PostgreSQL없이 PSQL만 설치하기 일반적인 GUI 클라이언트에서는 PostgreSQL의 psql을 지원하지 않습니다. 그러다보니 psql 명령어를 입력이 필요하면 별도 설치가 필요합니다. 물론 PC에 PostgreSQL 을 설치하셨으면 psql 이 설치되어있겠지만, Cloud, Docker 가 대중화된 시점에서 직접 PC에 PostgreSQL을 설치하는 경우는 거의 없는것 같습니다. 1. 설치 먼저 기존에 설치된 psql이 있는지 확인해봅니다. psql --version 해당 명령어 실행시 설치가 안된 것이 확인이 되면 Homebrew를 통해 libpq을 설치합니다. brew install libpq 해당 패키지 설치시 psql, pg_dump 및 기타 클라이언트 유틸리티 전체를 사용할 수 있습니다. 다만, PostgreSQL 패키지에 .. 2021. 5. 21.
PostgreSQL 데이터 Client에서 KST로 확인하기 (feat. DataGrip) PostgreSQL에서는 보편적으로 UTC로 시간 데이터를 저장후, 애플리케이션 / Gui Client에서의 타임존에 맞춰 노출시키는 방식을 선택하는데요. 해당 컬럼의 타입이 timestamp with time zone 로 되어있어야만 합니다. Client Timezone에 따라 자동 전환이 되다보니 서버 애플리케이션에서 접속 하게 되면 UTC가 KST로 잘 전환이되어 노출 되는데요. 반면에 DB Gui Client로 접근할 경우 Client Timezone을 기본값으로 세팅하면 KST 전환이 안되는데요. 그래서 JetBrains사의 데이터 전문 도구인 DataGrip 혹은 IntelliJ의 Database Client에서 Client Timezone을 설정하는 방법을 소개드립니다. as-is 먼저 현재.. 2021. 4. 24.
MySQL IN절을 통한 성능 개선 방법 잘 사용되진 않는 범위 조건 중에 IN 이 있습니다. 일반적으로 BETWEEN, LIKE, 에 비해서는 하나씩 모든 Key를 입력해야 되기 때문에 애플리케이션에서 작업양이 추가되어 선호되진 않는데요. 이 IN 절을 통해 여러 성능 개선들이 가능해서 생각보다 활용하기에 따라 많은 성능 개선을 이룰 수 있습니다. 이번 시간에는 IN 을 통한 2가지 개선 방법을 소개 드리겠습니다. 0. 소개 MySQL의 IN 절은 UNION으로 처리됩니다. 즉, eq 조건을 여러번 나눠서 실행하는 것과 같은 효과를 가지는데요. 이미 다들 아시겠지만 MySQL은 범위 조건에서는 인덱스 효과를 제대로 보지 못합니다. MySQL 인덱스 정리 및 팁 정확히는 인덱스 앞의 컬럼을 범위 조건으로 사용하는 경우 뒤의 인덱스 컬럼은 효과를.. 2021. 4. 22.

728x90