세션이란 데이터베이스 접속을 시작으로 종료하기까지 전체 기간을 세션이라고 한다.
하나의 세션에는 여러 개의 트랜잭션이 존재한다.
읽기 일관성
특정 세션에서 수행하는 데이터의 변경이 확정되기 전까지, 다른 세션에서는 본래의 데이터를 보여주는 것을 읽기 일관성 이라고 한다.
세션 테스트를 하기 위해서는 터미널(윈도우는 cmd)과 dbeaver 를 사용해서 두개의 세션을 사용해야 한다.
터미널에서 mysql을 실행하는 방법
mysql -u root -p -D market_db
password : 본인 비밀번호 입력
DBeaver와 터미널에서 둘다 실행하기
select * from mem_tcl;
DBeaver에서 실행하기
delete from mem_tcl where mem_id = "IVE";
DBeaver 와 터미널에서 정보 조회하기
select * from mem_tcl;


DBeaver에서는 아이브가 삭제된 상태로 조회되고 터미널 에서는 아이브가 삭제되기 전 상태로 출력된다.
DBeaver에서 실행한 delete문의 실행 결과가 아직 데이터베이스에 반영되지 않았기 때문이다.(commit이 실행되지 않았기 때문이다.)
어떤 데이터의 조작이 포함된 트랜잭션이 완료되기 전까지는 데이터를 직접 조작하는 세션 외의 다른 세션에서는 데이터 조작전의 상태가 일관적으로 조회, 출력, 검색 되는 특성이 읽기 일관성이다.(Read Consistency)
DBeaver에서 commit 하기
commit;
커밋 이후 데이터 조회하기


commit을 실행한 이후에는 delete문 수행 결과가 데이터베이스에 완전히 반영되어서 다른 세션에서도 아이브가 삭제된 상태로 조회된다.
하나의 데이터베이스에는 수많은 세션이 연결되고 각 세션에서는 데이터 조작 명령어가 포함된 여러 트랜잭션이 끊임없이 시작되고 종료되면서 실시간으로 작업이 수행된다.
데이터를 직접 변경중인 해당 세션을 제외한 모든 세션은 다른 세션의 데이터 변경과 상관없이 이미 확정된 데이터만 검색됨으로써 읽기 일관성을 보장한다.
Lock
Lock이란 데이터의 잠금을 뜻하는데 조작중인 데이터를 다른 세션이 조작할 수 없게한다.
다른 세션에서 아직 실행중인 트랜잭션이 존재한다면 그 다음에 명령을 실행한 세션이 실행되지 않고 대기상태가 된다.
하지만 이전 세션에서 commit 을 실행하면 그 다음에 명령을 실행할 세션이 실행된다.
'데이터베이스' 카테고리의 다른 글
| 데이터베이스 DDL, DML, DCL (1) | 2023.08.09 |
|---|---|
| MySQL 트랜잭션 (1) | 2023.05.26 |
| MySQL 트리거 (0) | 2023.05.26 |
| MySQL 커서 (0) | 2023.05.26 |
| MySQL 스토어드 함수 (0) | 2023.05.26 |