반응형

데이터베이스(DB)/SQL 7

[SQL] 서브쿼리(Sub Query) - Scalar, Inline View

서브 쿼리 - 쿼리 안에 또 다른 쿼리 (Sub Query) SELET문에 있는 서브 쿼리 - 스칼라 서브쿼리(Scalar Sub Query): 하나의 컬럼처럼 사용 (표현 용도) Ex)SELECT col1, (SELECT ...) FROM절에 있는 서브 쿼리 - 인라인 뷰(Inline View): 하나의 테이블처럼 사용 (테이블 대체 용도) Ex) FROM (SELECT ...) WHERE절에 있는 서브 쿼리 - 일반 서브쿼리: 하나의 변수(상수)처럼 사용 (서브쿼리의 결과에 따라 달라지는 조건절) Ex) WHERE col = (SELECT ...) 1. 스칼라 서브쿼리 (Scalar Subquery) - select 절에서 사용하는 서브쿼리 - scalar는 '한번에 한가지만 처리하는' 이라는 뜻, ..

[MySQL] Lock wait timeout exceeded

기존에 정상적으로 동작하던 API에서 간헐적으로 Timeout Error가 발생하기 시작했다. Cloudwatch Log에서 다음과 같은 에러 메시지를 확인하였고, 외부 연동 포인트가 아닌 DB에서 발생한 문제 임을 알게 되었다. Lock wait timeout exceeded; try restarting transaction Lock Timeout이 발생하는 원인 1. Transaction 수행 시간이 긴 경우 Lock Timeout이 발생하는 것은 하나의 Transaction이 처리되는 데에 시간이 오래 소요되는 경우이다. 실제로 에러가 간헐적으로 발생하는 API는 Bulk 요청이 주로 이뤄지는 API들이다. Bulk 요청이기 때문에 Transaction 관리를 보다 철저하게 처리해주었는데, Tran..

MySQL Lock 상황 문제 해결

최근 중국어 공부에 집중하느라 개발 관련해서는 느슨하게 지내고 있었는데 장애 처리 상황이 발생하여 해결했던 내용을 공유합니다. 장애 상황 외부에서 받은 데이터를 DB로 업로드 하는 프로그램이 있는데 평소에 잘 실행되던 프로그램이 특정 파일에 대해서만 저장이 되지 않는 문제가 발생하였습니다. 이 프로그램은 Spring Boot로 만들어진 프로그램으로 에러 메시지는 다음과 같은 에러 메시지가 나타납니다. Lock wait timeout exceeded; try restarting transaction 이런 상황이 되면 많은 개발자의 반응은 "조금 전까지 잘 돌아가던 프로그램이었어요! 왜 안돌아가는지 모르겠어요?" 일 것입니다. 그리고 timeout이 발생했으니 DB 서버 성능에 문제가 있는 것이 아닌가 하는..

DB 데이터 출력 시간 설정하기 DATE_FORMAT()

DB 데이터 출력 시간 설정하기 DATE_FORMAT() SELECT NOW() FROM DUAL; SELECT NOW() FROM DUAL; 년-월-일 시:분:초 출력 SELECT DATE_FORMAT(NOW(), '%Y-%M-%D') FROM DUAL; SELECT DATE_FORMAT(NOW(), '%y-%m-%d') FROM DUAL; SELECT DATE_FORMAT(NOW(), '%Y-%M-%D') FROM DUAL; SELECT DATE_FORMAT(NOW(), '%y-%m-%d') FROM DUAL; 출력시 대소문자 구별 년-월-일 출력 SELECT DATE_FORMAT(NOW(), '%H:%I:%S') FROM DUAL; SELECT DATE_FORMAT(NOW(), '%h:%i:%s')..

반응형