최대 절전 모드의 첫 번째 레벨 캐시는 세션 개체와 동일한 JVM 경계 내에서 유지 관리됩니다. 최대 절전 모드에서 사용되는 필수 캐시입니다. 클러스터 환경에서 어떻게 관리 할 것인지 걱정됩니다. 다중 노드는 고유 한 1 차 레벨 캐시 (세션 수와 동일)를가집니다. 단일 JVM에서는 하나의 엔티티가 다른 세션의 일부가 될 수 있지만 트랜잭션 관리자는 낙관적 잠금을 사용하여 상황을 처리합니다 ... 그러나 클러스터 환경에서 어떻게 관리 할 것입니까?클러스터 환경에서 최대 절전 모드의 첫 번째 레벨 캐시
1) 엔티티는 부실 데이터 문제를 일으키는 두 개의 다른 노드의 첫 번째 수준 캐시, 데이터 손실 문제.
2) 낙관적 잠금을 사용하면 트랜잭션을 복구하기가 어려울뿐만 아니라 다른 노드의 다른 유용한 트랜잭션에도 영향을 줄 수 있습니다.
3) 모든 트랜잭션마다 비관적 잠금을 사용할 수 없습니다. 그것은 최대 절전 캐싱의 유용성을 없앨 것이다.
4) 트랜잭션 관리가 최대 절전 응용 프로그램 자체에서 수행되고 트랜잭션 관리의 경계가 하나의 JVM이므로 격리 수준 설정도 작동하지 않습니다.
오류가 발생하지 않을 수도 있지만 노드가 오류가없는 배열이 아닌 경우 다를 수 있습니다.트랜잭션 관리는 최대 절전 응용 프로그램 자체에 의해 수행됩니다. 데이터베이스 트랜잭션 관리를 사용하지 않습니다 (비관적 잠금의 경우 제외). 격리 수준의 경계는 단일 JVM입니다. – user3082820
나는 동의하지 않을거야. 최대 절전 모드 아래에있는 것은 실제로 데이터베이스 트랜잭션이며 두 응용 프로그램 인스턴스는 동일한 데이터베이스를 공격합니다. app [node1]이 트랜잭션을 열고 (커밋하지 않고) 플러시하면 READ_COMMITED 격리 수준을 사용하지 않으면 app [node2]가 커밋되지 않은 데이터를 읽습니다. – codependent
Hibernate는 트랜잭션 관리를 위해 DB 잠금을 사용하지 않는다. 최대 절전 모드 트랜잭션 API를 확인하십시오. 일부 데이터베이스는 모든 종류의 격리 수준을 지원하지 않습니다. 최대 절전 모드에서 READ_COMMITED 격리 수준을 설정하면 데이터베이스의 격리 수준이 아닙니다. Hibernate는 비관적 잠금 (pessimistic locking)을 통해 잠금을 획득함으로써 데이터베이스 고립을 획득한다. – user3082820