InnoDB 버퍼 풀(Buffer Pool) : 메모리 내의 캐시 영역으로, 실제 데이터를 디스크에서 읽어오지 않고 메모리에서 바로 접근할 수 있도록 하는 공간이다.데이터 파일(Data File) : 디스크에 저장된 실제 데이터 파일이다. 모든 변경 사항은 결국 디스크에 반영되어야 한다. 1. INSERT 발생INSERT INTO User(m_id, m_name, m_area)VALUES(1, '이희망', '부산'); 데이터가 새로 삽입되면, InnoDB 버퍼 풀에 해당 데이터가 먼저 기록된다. 버퍼 풀에 저장된 데이터는 백그라운드 프로세스에 의해 나중에 데이터 파일에 기록된다. 2. UPDATE 발생UPDATE SET m_area = '서울' WHERE m_id = 1; UPDATE 작업이 발생하면서 ..
1. SELECT FOR UPDATESELECT * FROM Student WHERE id = 1 FOR UPDATE;SELECT FOR UPDATE를 실행하면 조회된 레코드에 대해 LOCK이 설정되어 해당 세션이 UPDATE 쿼리를 완료하고 COMMIT 또는 ROLLBACK 할 때까지 다른 세션에서 해당 레코드를 수정할 수 없다. 2. SELECT FOR UPDATE FlOW2-1. 테스트 환경도커를 사용하여 테스트 환경을 구성한다.MysQL 이미지 설치 : docker pull mysql:latestMySQL 컨테이너 실행 : docker run --name test-mysql-container -e MYSQL_ROOT_PASSWORD=1234 -d -p 3313:3306 mysql:latest My..
도커로 데이터베이스를 실행하고, 이를 스프링부트에서 사용할 수 있습니다. 그렇다면 왜 굳이 도커로 데이터베이스를 띄울까요? 다양한 이유가 존재하겠지만... 이유를 하나만 뽑자면 다음과 같습니다.팀 구성원이 모두 동일한 환경에서 작업을 진행할 수 있다. A라는 사람은 MySQL 5.7을 사용하고, B는 MySQL 8.0을 사용합니다. 서로가 다른 버전을 사용하기 때문에 호환성 문제가 발생할 수 있습니다. 특히나 배포에 있어서 예상치 못한 문제가 발생할 수 있습니다. 이러한 문제를 사전에 방지하고자 도커를 활용하여 개발 및 배포 환경에서 일관성, 호환성을 확보해야 합니다. 도커 컴포즈를 사용하여 MySQL를 띄어 스프링부트에서 사용해보도록 하겠습니다.도커 컴포즈도커 컴포즈란 여러 컨테이너를 손쉽게 관리할..
생성된 QR 코드의 만료 시간을 설정하고 DB에 저장하고자 하였다. 그러나.... 둘 간의 시간 오차가 발생했다. 분명 스프링에서는 2024-04-24T16:05:24.911197 로 생성이 되는데, DB에서는 2024-04-24 07:05:24.911197 로 저장되는 문제가 있었다. 그 이유는 간단했다. DB의 serverTimezone=UTC 로 설정되어 있었기 때문이다. 스프링은 당연히 KST 기준으로 시간을 설정하기 때문에 UTC와 오차가 발생한다. 따라서 기존의 serverTimezone을 수정한다.수정 전spring: datasource: url: jdbc:mysql://localhost:3306/qr_code?serverTimezone=UTC&characterEn..