데이터베이스

[MySQL] 잠금의 종류와 기능

• 본 글은 도서 Real MySQL 8.0을 참고해 작성한 글입니다.  🐳 잠금(Lock)이란 ?잠금은 여러 커넥션 간의 동시성을 제어하기 위한 기능이다. 예시를 들어보자 !유저 A와 유저 B가 동시에 데이터 X를 UPDATE 하려고 한다면 어떻게 되야 할까 ?단계유저 A유저 B1단계데이터 X 업데이트를 시작함. 2단계데이터 X에 대한 잠금을 획득함. 3단계데이터 X를 성공적으로 업데이트. 4단계 데이터 X 업데이트를 시도함.5단계 데이터 X에 접근 불가, 잠금 대기 중. 유저 A가 해당 데이터 레코드 X에 대해 잠금을 획득하면 락이 해제 되기 전까지 다른 유저는 해당 데이터를 업데이트 할 수 없다. 위와 같이 같은 레코드에 대해 동시에 수정하려고 하는 경우 발생하는 동시성 문제를 제어하기 위한 기능..

데이터베이스

[MySQL] DDL문이 실행되지 않을 때 ( SHOW FULL PROCESSLIST / KILL PROCESS)

문제상황 회사 사수가 DB 테이블에 외래키를 설정하는데 아무리 기다려도 ALTER TABLE 쿼리가 실행되지 않는 문제가 발생했다. 이 외에도 테이블 명 수정, 칼럼 명 수정, 외래키 지정, TRUNCATE 등 모든 DDL 쿼리문이 실행되지 않았다. 문제원인 문제 원인은 해당 테이블에 Transactional한 process가 끝나지 않아서 발생하는 문제였다. 참고한 자료는 다음과 같다. mysql bug report mysql 공식 문서 문제 해결을 위해서는 변경하려는 테이블에 완료되지 않은 Transaction을 정리해야 할 것으로 보인다. SHOW FULL PROCESSLIST 우선 완료되지 않은 process 목록을 보기 위해 아래의 쿼리문을 실행해 보자 SHOW FULL PROCESSLIST; ..

후뿡이
'락' 태그의 글 목록