-

Multi IN 조건 실행 계획 오류(warning) 분석
MySQL 서버에서 쿼리의 WHERE절에 IN 조건을 작성할 때는 일반적인 방식이 아닌 Row constructor 방식을 사용할 수 있다. 쿼리로 표현하면 다음과 같다.(이 글에서는 Multi IN 조건이라고 부르겠다.) 그리고 이를 다시 동일한 결과셋을 반환하는 쿼리로 작성하면 다음과 같다.(이 글에서는 General IN 조건이라고 부르겠다.) 그런데 특정 조건(쿼리의 조건을 의미하지 않음)에서는 Multi IN clause 실행 계획에서 불명확한 경고 문구가…
-

MySQL Custom command-line client
MySQL Command-Line Client에 내 편의대로 단축키 기능을 넣은 실행 파일을 공유해보려고 한다. 이전에 관리하던 블로그에서 한 번 공유한 적이 있었는데, 일부 기능을 좀 더 추가하였다. 실행 파일은 아래 경로에서 압축 파일로 다운로드 받을 수 있다. (순서대로 8.0 tar.gz 파일, 9.0 버전의 소스) 8.0 버전의 mysql 실행 파일은 라이브러리 문제로 9.0에서 실행할 수 없으니, 설치된 MySQL…
-

Mysql character set & collation
본 내용을 들어가기에 앞서 아래 첨부된 자료들은 당근 DB팀에서 함께 고생하며 준비한 자료임을 밝힌다. — 오늘은 작년(2023년 9월)에 AWS DNB DBA DAY에서 소프트웨어 엔지니어 및 데이터베이스 관리자를 대상으로 MySQL 8.0 캐릭터 셋(문자 집합)과 콜레이션에 대해서 발표한 내용을 공유해보려고 한다. 그 때 행사 담당자분이 AWS Database Blog에 내용을 정리해서 올려준다고 했는데 뭔가 흐지부지 된 느낌이다. 그래서…
-

MySQL 서버의 NOT_IN_IGNORE_THRESHOLD 이슈
최근에 MySQL 서버에서 수행되는 쿼리 중에 특이하게 수행되는 쿼리를 하나 발견했다. 실행계획을 수립하는데만 몇 초가 걸리는 아주 특이한 쿼리였다. DB 서버와 테이블 스펙은 이정도고, 문제가 되었던 쿼리를 한 번 봐보자. (실제 서비스에 사용되는 쿼리라서 테이블과 컬럼명은 다르게 변경했다) 이 쿼리를 수행하면 최초에는 xx초 정도 소요되고, 한 번 캐싱되고 나면 0.2초 내로 끝난다.실행계획도 봐보자. 사용 가능한 후보군 인덱스들이…
-

Real time monitoring – dolphie
Dolphie? 최근에 Real-Time DB 모니터링 오픈소스를 하나 발견하게 되어 간단한 이야기를 하고자 한다.먼저 혹할만한 사진을 하나 첨부하고.. 위의 그림은 실제 서비스에 사용되는 DB 서버의 real-time 대시보드이다.DB 인스턴스별로 QPS(SELECT,DML), Lock, Thread 정보 등을 실시간으로 확인할 수 있어서 현재 시점의 DB 서버 리소스 사용량이 궁금할 때 바로 확인해볼 수 있다.MySQL DBA라면 다 아는 사람일테지만 lefred라는 사람이 최초로…