Database 2

[MySQL/InnoDB] Gap Lock(갭 락)의 실행 원리 탐구

갭 락(Gap Lock) 이란? 레코드가 아니라 레코드와 바로 인접한 레코드 사이의 간격만을 잠그는 것을 의미한다. 갭 락의 역할은 레코드와 레코드 사이의 간격에 새로운 레코드가 생성되는 것을 제어한다. 의문: 어떻게 갭에 락을 걸 수 있는 거지? 그러면 어떻게 존재하지 않는 row에 락을 걸 수 있는 것일까? 한 번 살펴보았다. 현재 1번과 5번 row에만 데이터가 있는 상태이다. 우선 존재하는 데이터인 5번 row에 락을 걸어보겠다. select * from parent where id=5 for update; LOCK_TYPE: RECORD, LOCK_MODE: X, REC_NOT_GAP 이 보인다. 갭을 제외한 레코드에 쓰기 락이 걸렸다는 의미이다. 이건 예상되는 결과였다. 이제는 존재하지 않는 ..

Database/MySQL 2023.09.16

[MySQL] Access denied for user '유저 아이디'@'localhost' (using password: YES): 로그인 실패 에러

문제 상황 - mysql 8.x 버전 사용 중 - 터미널에서 mysql -u '유저 아이디' -p로 로그인 할 시 성공함 - 해당 유저에게 권한 부여도 완료함 - 인텔리제이 Database 설정에서도 로그인이 성공되어 데이터베이스가 연결됨 - 그런데 똑같은 설정으로 스프링부트를 실행하면 제목과 같은 에러가 발생한다... 해결 과정 처음에는 로그를 보고도 로그인에 문제가 있을 거라는 생각을 못했다. 그래서 다른 에러 로그를 구글링하다가 우연히 이 글을 보게 되었다. 나와 문제 상황이 똑같았는데, 어이없게도 비밀번호를 변경하니까 해결되었다는 것이다. 마침 내가 설정해 놓은 비밀번호도 네자리 수의 간단한 비밀번호였다. 그래서 영어를 섞어 비밀번호를 수정했더니 해결되었다. 이게 무슨... MySQL 8.0 기준..

Database/MySQL 2023.02.03