MariaDB Deadlock 재현과 원인 추적 — 두 세션 잠금 순서로 이해하기
도입 Deadlock은 두 트랜잭션이 서로 상대방의 잠금 해제를 기다리는 순환 대기다. InnoDB는 이를 감지하면 한 트랜잭션을 희생시켜 오류 1213을 반환하고 다른 트랜잭션이 진행하게 한다. 재시도는...
SQL 검색 결과: 25개
도입 Deadlock은 두 트랜잭션이 서로 상대방의 잠금 해제를 기다리는 순환 대기다. InnoDB는 이를 감지하면 한 트랜잭션을 희생시켜 오류 1213을 반환하고 다른 트랜잭션이 진행하게 한다. 재시도는...
도입 컬럼을 한 번에 바꾸면 이전 애플리케이션과 새 애플리케이션이 동시에 동작하는 배포 구간에서 한쪽이 실패할 수 있다. Expand-Contract는 호환 가능한 구조를 먼저 추가하고 사용 전환이 끝난 뒤 오...
도입 최소 권한은 GRANT 문장을 작성하는 것으로 끝나지 않는다. 애플리케이션이 필요한 작업은 성공하고, 스키마 변경·계정 관리·시스템 테이블 조회는 실패하는지 실제 계정으로 확인해야 한다. 아래 SQL은 M...
도입 덤프 명령의 성공은 마이그레이션 완료가 아니다. 구조, 데이터, 루틴·이벤트, 문자셋과 애플리케이션 동작이 대상에서 검증되어야 한다. 이 글은 InnoDB 데이터베이스 하나를 새 서버로 옮기는 절차와 각 ...
도입 ALTER TABLE이 끝나지 않을 때 테이블 크기만 의심하면 원인을 놓칠 수 있다. Waiting for table metadata lock 상태라면 다른 세션의 열린 트랜잭션 때문에 DDL이 시작되지 ...
도입 같은 AI 모델이라도 프롬프트에 따라 결과 품질이 크게 달라진다. 실무에서는 모델보다 프롬프트 설계가 더 중요할 때가 많다. 특히 AI 에이전트와 코드 생성에서는 프롬프트 품질이 결과물을 결정...
Metrics, Logs, Traces의 정의를 각각 외워도 장애가 발생했을 때 연결하지 못하면 조사 시간이 줄지 않는다. 이 글은 PHP API의 응답 시간이 늘고 오류율이 상승한 상황을 가정해 이상 감지 → 실패...
AI로 코드 초안을 빠르게 만드는 것과 안전하게 배포하는 것은 다른 문제다. 같은 코드 생성이라도 README 문구 수정과 인증 로직 변경의 위험은 같지 않다. 따라서 “AI를 사용했는가”보다 작업의 영향도에 맞는 ...
데이터베이스 인덱스는 크게 Clustered Index와 Non-Clustered Index로 나뉜다. 두 인덱스는 “데이터를 어떻게 저장하고 접근하는가”에서 구조적인 차이가 있다. 이 차이를 이해하면 조회 ...
MySQL에서 사용하는 대부분의 인덱스는 B-Tree 구조로 이루어져 있다. B-Tree는 대용량 데이터에서 빠르게 값을 찾기 위해 설계된 트리 형태의 자료 구조다. 테이블 전체를 순차적으로 검색하면 데이터가...