DB 3

mysql - explain, explain analyze 해석

이번 포스트에서는 가끔 볼때마다 찾아보는 mysql explain, explain analyze에 대해서 정리했습니다아는내용이 추가될수록 정리하는 내용은 계속 업데이트할 예정입니다다루는 내용실행 계획 분석 ( explain analyze )id 컬럼type 컬럼key 컬럼key_len 컬럼ref 컬럼rows 컬럼filtered 컬럼Extra 컬럼using filesortusing indexusing temporaryusing wherebackward index scan explain analyze 예시 SQLEXPLAIN ANALYZESELECT first_name, last_name, SUM(amount) AS totalFROM staff INNER JOIN payment ON staff.staff_..

DB 2024.08.19

mysql - sending to client

자주 실행되는 쿼리는 아니지만 서버에서 타임아웃(1분)이 발생할정도로 오래걸리는 쿼리를 발견했습니다.쿼리만 보고는 크게 문제가 되보이지 않았습니다. execution plan을 봐도 filter가 안되거나 하지 않습니다.process list로 확인해보면 Sending to Client로 되어있고 쿼리 응답시간이 깁니다.기본 페이지네이션을 통해 데이터크기를 줄였습니다.20초 후반대 걸리는 쿼리가 ms단위로 줄었습니다. json 컬럼을 조회하면서 네트워크 payload가 커졌습니다. 쿼리 튜닝은 인덱스 대부분 개선되지만 이렇게 대량의 disk를 access하는 작업은 쿼리 응답시간이 오래 걸립니다.  참고링크:sending to client: https://stackoverflow.com/a/2462612..

DB 2024.08.19

MySQL PK 전략

현재 제 경험내에서는 PK 전략은 두가지로 나뉩니다UUID를 PK로 사용정수형 PK를 사용 + Unique Identifier 컬럼 추가1안으로 대부분 처리했고 중간에 데이터 성격에 따라 2안을 사용한 경우도 있습니다PK 설정시 고민했던 포인트MSA 환경- UID PK: UID가 많이 편했습니다. 데이터 마이그레이션할때 ID 충돌에 대한 걱정은 없었습니다- 정수형 PK: 정수형 PK의 경우에는 id가 unique하지 않기 때문에 id에 해당하는 데이터가 있는 경우, 그 데이터가 마이그레이션 할 데이터와 다른경우.. 머리가 아픕니다 새로운 id를 매핑해주고 기존 데이터들도 새로운 id를 매핑해주는 작업이 정말 귀찮고 어렵습니다정렬- UID PK: 제가 사용한 UID는 순서보장이 안되므로 순서대로 정렬하고 ..

DB 2024.07.29