mysql을 사용하면서 update시 어떻게 내부 동작을 하는지 궁금증이 생겨 알아보았습니다. 내부 동작이 어떻길래 각각의 트랙젝션의 설정에 따라서 데이터를 가져올 수 있는지 한번 찾아본 내용을 공유합니다. 참고한 책은 'real mysql 8.0' 입니다. 트랜잭션이 begin 이후 update query가 동작하면 commit까지 해당 데이터는 반영되지 않고 버퍼풀에 남게 됩니다. 기존의 데이터는 언두 로그에 기록되고 (사진 속 '서울') 새로운 데이터는 버퍼풀에 기록되는데 (사신 속 '경기') 만약 commit을 하게되면 퍼퍼풀의 데이터를 innodb의 기록용 스레드가 디스크에 남기게 됩니다. 반대로 rollback을 하게된다면 언두 로그에 기록된 데이터를 버퍼풀로 다시 가져오는 작업을 진행합니다...