사물 의 격 리 단계

더러 운 읽 기, 중복 읽 기, 환 독 불가:
더러 운 읽 기: 현재 트 랜 잭 션 에서 읽 은 데 이 터 는 다른 트 랜 잭 션 에서 제출 하려 고 했 지만 성공 적 인 데 이 터 를 제출 하지 못 했 습 니 다. 다른 설명 을 바 꾸 면 다른 사물 의 스크롤 백 취소 전 데 이 터 를 읽 을 수 있 습 니 다.
만약 에 사무 A 가 수행 하 는 과정 에서 데이터 C 를 수정 하고 제출 하기 전에 사무 B 가 데이터 C 를 읽 었 습 니 다. 이때 사무 A 가 다시 굴 러 가면 사무 B 는 더러 운 읽 기 가 됩 니 다.
중복 읽 을 수 없습니다. 같은 사무 에서 같은 데 이 터 를 여러 번 읽 었 는데 데이터 변경 (다른 것 이 수정 되 었 을 수도 있 습 니 다) 이 바로 중복 읽 을 수 없 는 것 입 니 다.
환 독: 현재 사 무 를 한 번 조회 한 데 이 터 는 그 후에 읽 은 데이터 보다 적 습 니 다. 그 동안 다른 사물 이 데 이 터 를 조작 하여 더 많은 조건 을 만족 시 키 는 데 이 터 를 만 들 었 을 수도 있 습 니 다.
트 랜 잭 션 A 는 먼저 조건 색인 에 따라 N 개의 데 이 터 를 얻 은 다음 에 트 랜 잭 션 B 가 이 N 개의 데이터 이외 의 M 개의 데 이 터 를 바 꾸 거나 트 랜 잭 션 A 의 검색 조건 에 맞 는 데 이 터 를 추가 하여 트 랜 잭 션 A 가 다시 검색 하여 N + M 개의 데 이 터 를 발견 하면 환 독 이 생 긴 다.
중복 읽 기와 환 독 비교 가 불가능 합 니 다. 두 가 지 는 비슷 하지만 전 자 는 update 나 delete, 후 자 는 insert 를 대상 으로 합 니 다.
Spring 에서 주 해 를 사용 하여 표지 에 대응 하 는 격 리 단 계 를 표시 합 니 다.   isolation= Isolation.READ_COMMITTED

    @Override
	@Transactional(isolation= Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED)
	public Role getRole(Long id) {
		// TODO Auto-generated method stub
		return null;
	}

spring( ) ( ):
1、Serializable ( ): , , ;

2、REPEATABLE READ( ) : ( ) 。 “ ” “ ” , “ ”, 。

3、READ COMMITTED ( ): , , “ ”, “ ” “ ”。 。

4、Read Uncommitted( ) : , , , “ ”、“ ” “ ”。

https://blog.csdn.net/Somhu/article/details/78775198  、 、

 

 

좋은 웹페이지 즐겨찾기