MySQL 대량 INSERT에서 보조 인덱스가 늘면 생기는 비용: 10만 건 입력 비교
“이 화면 조회가 느린데, 인덱스 하나만 추가해 주세요.” DBA가 가장 자주 받는 요청 중 하나입니다. 조회 쪽에서 보면 인덱스는 거의 공짜처럼 보입니다. …

“이 화면 조회가 느린데, 인덱스 하나만 추가해 주세요.” DBA가 가장 자주 받는 요청 중 하나입니다. 조회 쪽에서 보면 인덱스는 거의 공짜처럼 보입니다. …

어느 날 개발자에게서 이런 문의가 들어왔다고 해 보겠습니다. “관리 화면에서 금액을 100에서 200으로 바꾸고 COMMIT까지 확인했습니다. 그런데 다른 화면에서는 계…

같은 테이블, 같은 날, 연달아 실행한 ALTER TABLE 두 개가 있습니다. 첫 번째는 31ms 만에 끝났고, 두 번째는 실행 즉시 오류 1845로 거부되었습니다. 데이터는 그…

주문 목록 화면에 배송 메모를 보여 달라는 요청이 들어왔다고 해 보겠습니다. 개발자는 기존 목록 쿼리의 SELECT 목록에 customer_note 컬럼 하나를 추가해 배포합니다.…

대량 DELETE를 끝내고 디스크 사용량을 확인했는데 숫자가 그대로라면, 가장 먼저 드는 생각은 “삭제가 제대로 안 됐나?”입니다. 그다음에는 통계가 늦게 반…
유니크 키가 있는 테이블에 이미 있는 값을 넣으면 곧바로 중복 오류가 날 것이라고 예상하기 쉽습니다. 그런데 같은 값을 먼저 넣은 트랜잭션이 아직 끝나지 않았다면, 뒤따르는 INS…
고객 한 명의 주문 합계를 구하는 SQL은 결과가 한 행뿐입니다. 그런데 결과가 작다고 해서 MySQL이 읽는 데이터도 작은 것은 아닙니다. 조건에 맞는 인덱스가 없으면 10건을 …

장애 대응 중에 SHOW PROCESSLIST를 열어 보면 대부분의 연결이 Sleep입니다. 실행 중인 SQL이 없으니 문제없는 연결로 넘기기 쉽습니다. 그런데 Sleep 연결 중…
같은 SQL을 실행했는데 첫 번째만 느리고 두 번째부터 빨라지는 경우가 있습니다. 실행계획이 잘못되었거나 인덱스가 부족한 것처럼 보이지만, 조회에 필요한 데이터 페이지가 이미 메모…