문제

어느 것을 결정합니까? CacheConcurrencyStrategy 사용?

  • NonstrictReadWriteCache,
  • ReadOnlyCache,
  • ReadWriteCache,
  • TransactionalCache.

나는 읽었다 https://www.hibernate.org/hib_docs/v3/api/org/hibernate/cache/cacheconcurncerrencystrategy.html, 그러나 충분히 자세히 설명하지는 않습니다.

도움이 되었습니까?

해결책

그만큼 최대 절전 모드 문서 그것들을 정의하는 데 꽤 좋은 일을합니다.

19.2.2. 전략 : 읽기 전용

응용 프로그램을 읽지 않지만 수정하지 않으면 영구 클래스의 인스턴스를 사용하면 읽기 전용 캐시를 사용할 수 있습니다. 이것은 가장 단순하고 최적의 수행 전략입니다. 클러스터에서 사용하기에도 안전합니다.

19.2.3. 전략 : 읽기/쓰기

응용 프로그램이 데이터를 업데이트 해야하는 경우 읽기 제기 캐시가 적절할 수 있습니다. 직렬화 가능한 트랜잭션 격리 수준이 필요한 경우이 캐시 전략을 사용해서는 안됩니다. 캐시가 JTA 환경에서 사용되는 경우 속성을 지정해야합니다. hibernate.transaction.manager_lookup_classJTA를 얻기위한 전략의 이름 TransactionManager. 다른 환경에서는 거래가 완료되도록해야합니다. Session.close() 또는 Session.disconnect() 호출됩니다. 클러스터 에서이 전략을 사용하려면 기본 캐시 구현이 잠금을 지원하는지 확인해야합니다. 내장 캐시 제공 업체는 잠금을 지원하지 않습니다.

19.2.4. 전략 : NAMPLEST 읽기/쓰기

응용 프로그램이 때때로 데이터를 업데이트 해야하는 경우 (즉, 두 트랜잭션이 동일한 항목을 동시에 업데이트 할 가능성이 극도로 극히 발생하지 않는 경우) 엄격한 트랜잭션 격리가 필요하지 않은 경우, NAMPLONCTRICT-읽기 쓰기 캐시가 적절할 수 있습니다. 캐시가 JTA 환경에서 사용되는 경우 hibernate.transaction.manager_lookup_class. 다른 환경에서는 거래가 완료되도록해야합니다. Session.close() 또는 Session.disconnect() 호출됩니다.

19.2.5. 전략 : 거래

트랜잭션 캐시 전략은 Jboss Treecache와 같은 완전히 트랜잭션 캐시 제공 업체를 지원합니다. 이러한 캐시는 JTA 환경에서만 사용할 수 있으며 지정해야합니다. hibernate.transaction.manager_lookup_class.

다시 말해:

  • 읽기 전용 : 데이터에 유용합니다 자주 읽지 만 업데이트되지 않았습니다 (예 : 국가와 같은 참조 데이터). 이건 간단하다. 그것은 모두 (분명히) 최고의 성능을 가지고 있습니다.

  • 읽기/쓰기 : 데이터가 필요한 경우 바람직합니다 업데이트 할. 그러나 그것은 제공하지 않습니다 직렬화 가능 격리 수준, 팬텀은 읽습니다 발생할 수 있습니다 (트랜잭션이 끝날 때 처음에는 없었던 것을 볼 수 있습니다). 읽기 전용보다 더 많은 오버 헤드가 있습니다.

  • NAMPLONCTRICT 읽기/쓰기 : 또는 두 개의 개별 트랜잭션 스레드가 동일한 객체를 업데이트 할 가능성이 없으면 NAMPLEST- 읽기 쓰기 전략을 사용할 수 있습니다. 읽기 쓰기보다 오버 헤드가 적습니다. 이것은 데이터에 유용합니다 거의 업데이트되지 않습니다.

  • 거래 : 필요한 경우 완전히 거래 은닉처. JTA 환경에서만 적합합니다.

따라서 올바른 전략을 선택하는 것은 데이터가 업데이트되거나 없다는 사실, 업데이트 빈도 및 고립 수준이 필요한 사실에 따라 다릅니다. 캐시에 넣을 데이터에 대해 이러한 질문에 답하는 방법을 모르는 경우 DBA의 지원을 요청할 수 있습니다.

다른 팁

read_only : 절대 변경되지 않는 엔티티에만 사용됩니다 (그러한 엔티티를 업데이트하려는 시도가 이루어지면 예외가 발생합니다). 매우 간단하고 성능이 있습니다. 변경되지 않은 일부 정적 참조 데이터에 매우 적합합니다.

NACTOMSRICT_READ_WRITE : 영향을받는 데이터를 변경 한 트랜잭션 후 캐시가 업데이트됩니다. 따라서, 강한 일관성은 보장되지 않으며 캐시에서 오래된 데이터를 얻을 수있는 작은 시간 창이 있습니다. 이러한 종류의 전략은 최종 일관성을 견딜 수있는 사용 사례에 적합합니다.

read_write : 이 전략은 '소프트'잠금 장치를 사용하여 달성하는 강력한 일관성을 보장합니다. 캐시 된 엔티티가 업데이트되면 해당 엔터티의 캐시에도 소프트 잠금 장치가 저장되어 트랜잭션이 커밋 된 후에 릴리스됩니다. Soft-Locked 항목에 액세스하는 모든 동시 트랜잭션은 데이터베이스에서 해당 데이터를 직접 가져옵니다.

거래 : 캐시 변경은 분산 XA 트랜잭션에서 수행됩니다. 캐시 된 엔티티의 변경은 동일한 XA 트랜잭션에서 데이터베이스와 캐시에서 커밋되거나 롤백됩니다.

API 문서를 읽는 것은 좋은 일이지만 문서도 읽어야합니다. 두 번째 레벨 캐시 - 전략.

  1. 트랜잭션-업데이트의 드문 경우에 동시 트랜잭션의 오래된 데이터를 방지하는 데 중요한 데이터 에이 전략을 사용하십시오.

  2. Read-Write-- 다시 업데이트의 드문 경우에 동시 트랜잭션의 오래된 데이터를 방지하는 데 중요한 데이터 에이 전략을 다시 사용하십시오.

  3. NAMPLEST-READ-WRITE-이 전략은 캐시와 데이터베이스 사이의 일관성을 보장하지 않습니다. 데이터가 거의 변경되지 않고 오래된 데이터의 작은 가능성이 중요한 문제가 아닌 경우이 전략을 사용하십시오.

  4. 읽기 전용-데이터에 적합한 동시성 전략. 참조 데이터에만 사용하십시오.

이것이 당신의 의심을 없애기를 바랍니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top