PRO DBDATA

PRO DBDATA

인기글

최신 글

보조 인덱스 0개, 1개, 4개일 때 MySQL 10만 건 평균 입력 시간 1.92초, 2.56초, 4.16초 비교

MySQL 대량 INSERT에서 보조 인덱스가 늘면 생기는 비용: 10만 건 입력 비교

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

MySQL 격리 수준별 반복 조회 결과

MySQL 격리 수준별 반복 조회 결과: READ COMMITTED와 REPEATABLE READ 비교

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

MySQL 컬럼 추가 전 확인할 것

MySQL 컬럼 추가 전 확인할 것: INSTANT 적용 조건과 오류 1845 해결 실험

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

MySQL 커버링 인덱스 실험

MySQL 커버링 인덱스 실험: 조회 컬럼 하나가 추가되면 무엇이 바뀌는가

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

MySQL DELETE 후 파일 크기가 줄지 않는 이유

MySQL DELETE 후 파일 크기가 줄지 않는 이유: 90% 삭제와 OPTIMIZE TABLE 실측

대량 DELETE를 끝내고 디스크 사용량을 확인했는데 숫자가 그대로라면, 가장 먼저 드는 생각은 “삭제가 제대로 안 됐나?”입니다. 그다음에는 통계가 늦게 반…

MySQL 유니크 키 중복 입력이 대기하는 이유

MySQL 유니크 키 중복 입력이 대기하는 이유: 미커밋 INSERT 충돌 실험

유니크 키가 있는 테이블에 이미 있는 값을 넣으면 곧바로 중복 오류가 날 것이라고 예상하기 쉽습니다. 그런데 같은 값을 먼저 넣은 트랜잭션이 아직 끝나지 않았다면, 뒤따르는 INS…

MySQL sys 스키마로 테이블 스캔이 많은 쿼리 찾기

MySQL sys 스키마로 테이블 스캔이 많은 쿼리 찾기: 10만 행 실험과 인덱스 개선 검증

고객 한 명의 주문 합계를 구하는 SQL은 결과가 한 행뿐입니다. 그런데 결과가 작다고 해서 MySQL이 읽는 데이터도 작은 것은 아닙니다. 조건에 맞는 인덱스가 없으면 10건을 …

MySQL에서 COMMIT 없이 Sleep 상태로 남은 세션을 INNODB_TRX로 추적하는 방법

MySQL 커밋을 잊은 세션 찾기: INNODB_TRX로 장기 트랜잭션 추적

장애 대응 중에 SHOW PROCESSLIST를 열어 보면 대부분의 연결이 Sleep입니다. 실행 중인 SQL이 없으니 문제없는 연결로 넘기기 쉽습니다. 그런데 Sleep 연결 중…

MySQL Buffer Pool에 데이터가 적재되는 과정

MySQL Buffer Pool에 데이터가 적재되는 과정: 첫 조회와 반복 조회 비교

같은 SQL을 실행했는데 첫 번째만 느리고 두 번째부터 빨라지는 경우가 있습니다. 실행계획이 잘못되었거나 인덱스가 부족한 것처럼 보이지만, 조회에 필요한 데이터 페이지가 이미 메모…

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.