아침에 ERP 매출 현황을 열었는데 전날 집계가 아직 반영되지 않았습니다. 운영 담당자가 작업 이력을 열어 보니 일일 집계 배치의 실행 시간이 평소보다 길었습니다. 같은 시간대의 MySQL 슬로우 쿼리 로그에는 매출 테이블을 읽는 SQL이 여럿 보입니다. 이 중 어떤 문장이 일일 집계에 쓰였는지 알아야 다음 점검 대상을 정할 수 있습니다. 이 글은 ERP 운영을 바탕으로 구성한 설명용 업무 장면입니다. MySQL 8.4에서 배치 실행 이력과 슬로우 쿼리 로그를 대조해, 다음에 확인할 SQL을 좁히는 순서를 다룹니다. 배치 실행 이력으로 시간 범위 좁히기 스케줄러에서 지연된 실행 건의 실제 시작·종료 시각과 재시도 이력을 먼저 확인합니다. 재시도한 경우 실행 건별로 시간 범위를 ..
출고 마감에 앞서 주문 연동 담당자가 쇼핑몰에서 들어온 주문과 사내 주문 목록을 대조합니다. 쇼핑몰에는 접수 기록이 있는데 사내 목록에 아직 나타나지 않는 건이 있습니다. 재처리 화면에서 해당 주문을 다시 보내도 저장 응답이 늦어지면, 담당자는 앞선 등록 작업이 끝났는지부터 확인해야 합니다. 이 글은 주문 연동 운영을 바탕으로 구성한 설명용 업무 장면입니다. MySQL 8.4의 InnoDB에서 기다리는 등록 요청과 잠금을 보유한 작업을 연결하는 순서로 살펴봅니다. 주문 목록에 나타나기 전의 INSERT 연동 작업이 주문 행을 넣었더라도 트랜잭션을 아직 커밋하지 않았다면, 다른 연결의 일반 조회에서 그 행이 보이지 않을 수 있습니다. 트랜잭션은 관련 DB 변경을 묶어 확정하거..