슬로우 쿼리 발생 내가 운영하던 그룹웨어 게시판 서비스에는 '최근 게시글'이라는 특수한 게시판이 존재했다. 보통 게시글은 사용자가 등록한 게시판에 접근해서 조회하지만, 해당 게시판은 모든 게시판의 게시글을 등록 순으로 보여주는 게시판이었다. 내가 막 게시판 서비스를 맡게 되었을 때 전임자 분께서 "해당 API가 속도가 안나오니 언젠간 튜닝을 해야 할거에요"라는 말을 하셨는데, 그 때 속도 체크 해봤을 때는 2~3초 나와서 아직 튜닝할 때는 아니라고 판단하고 냅두고 있었다. 그런데 어느날 인프라 팀에서 특정 고객사에서 해당 게시판의 게시글 리스트를 조회할 때 속도가 너무 오래걸린다는 안내를 받았고, 해당 고객사에 들어가서 확인해보니 API 속도가 약 7초 가량 소요되고 있었다. 속도 저하의 원인이 되었던 ..
Trouble Shooting/Database
개요 회사 업무를 진행하던 중 특정 쿼리를 수행할 때 마다 아래와 같은 Collations 관련 오류가 연달아 3번이나 발생했다. Illegal mix of collations (~~) and (~~) for operation '=’ Collation이란 ?? 문자열을 비교, 정렬하기 위해서 정의된 규칙들의 집합이다 (Character Set은 글자 자체의 인코딩에 대한 정의) 이 Collation 오류에 대한 히스토리와 해결 방법을 공유하고자 한다. 첫번째 오류 가장 처음 발생한 Collation 오류 메시지는 다음과 같다 Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operati..
개요 서브쿼리를 사용하면 FROM 절에서 특정 테이블을 지정하는 것이 아닌, 서브쿼리의 결과값을 테이블로 지정할 수가 있다. select a.id, b.name from ( select * from tableA ORDER BY id) a join tableB b on a.id = b.id 회사 업무 중 이 FROM절에 서브쿼리를 적용하고 내부에서 ORDER BY 통해 정렬을 하도록 쿼리를 짰는데,이 서브쿼리를 수행한 결과가 ORDER BY 지정한대로 정렬이 되지 않았다. 원인 및 해결 공식문서를 찾아보니, mysql 에서는 서브쿼리의 레코드 순서를 보장하지 않는다고 한다. https://mariadb.com/kb/en/why-is-order-by-in-a-from-subquery-ignored/ Why ..
에러 내용 Oracle 접속 할 때 아래와 같이 에러가 발생하며 접속이 안되는 오류가 발생했다. - 에러 내용 : ORA-12560: TNS:protocol adapter error 원인 및 해결 오류를 확인해보니 기동한 서버의 오라클 관련 서비스를 실행하지 않아서 오류가 발생한 것이었다. 1. 내컴퓨터 -> 컴퓨터 관리 -> 서비스 클릭 2. OracleServce 등 3개의 서비스 실행 3. 서비스 실행하고 다시 접속 시 아래와 같이 해결된다
이슈내용 UPDATE문에서 테이블을 JOIN 후 값을 업데이트 해주는 쿼리를 짜는 중에 SET 절에 조인한 테이블을 집계하는 부분에서 에러가 발생했다. 원인 및 해결 검색해서 찾아보니 WHERE 절이나 SET절 같은 곳에서는 집계함수를 사용할수 없다고 한다. 그래서 JOIN하는 테이블을 서브쿼리로 변경하고 내부에서 집계함수를 사용하는 방법으로 변경했다.