bestsource

최대 절전 모드 + 스프링을 사용한 캐싱 - 몇 가지 질문

bestsource 2023. 8. 2. 09:16
반응형

최대 절전 모드 + 스프링을 사용한 캐싱 - 몇 가지 질문

저는 Spring 3과 Hibernate 3.6으로 웹 애플리케이션을 개발하고 있습니다.현재는 스프링 및 최대 절전 모드를 사용한 캐싱이 어떻게 작동하는지 이해하려고 합니다.Hibernate를 사용한 캐싱과 Spring에 대한 몇 가지 소스를 찾았고 지금 제 정보를 수집하려고 합니다.저는 여전히 두 프레임워크 모두에 대해 몇 가지 질문이 있으며, 누군가 답변하거나 여기에 나열된 사실이 정확한지 알려주시면 감사하겠습니다.

대부분의 경우 짧은 답변(예/아니오)으로 충분합니다.이 목록은 스프링 및 동면 캐시가 어떻게 작동하는지 이해하고자 하는 다른 사람들에게도 유용할 수 있다고 생각합니다.

General

최대 절전 모드는 1단계 캐시, 2단계 캐시, 쿼리 캐시를 지원합니다.

Spring 자체는 다음과 같은 캐싱 가능성을 지원합니다. Method Caching만 지원합니다.

1st Level Cache

1단계 캐시는 모든 최대 절전 모드 응용 프로그램의 일부입니다.

1단계 캐시는 모든 최대 절전 모드 세션에 대해 생성됩니다.

1단계 캐시에는 무엇이 저장됩니까?개체 또는 속성의 값?질문과 그 결과?

2nd Level Cache

2차 레벨 캐시는 애플리케이션당 한 번씩 사용된다는 사실을 알게 되었습니다.그것은 거짓이 아닙니까?한 번에 한 번씩 쓰는 거 아닙니까?SessionFactory및: 다중 세션 팩토리 = 다중 2차 레벨 캐시가 가능합니까?

2차 레벨 캐시에 저장된 내용: 제 생각에는 객체 자체가 아닌 하나의 레코드에 속하는 값입니다.

한 레코드의 값을 2차 레벨 캐시에 저장할 때 관련 값(외부 키를 통해 연결된 개체로부터)도 저장할 수 있습니까?

2단계 캐시에서 한 개체의 값을 업데이트할 때 캐시에서 연결된 개체의 값도 업데이트할 수 있습니까?

10) 객체의 값이 변경될 때 2단계 캐시를 업데이트하려면 어떻게 해야 합니까?플래시? 캐시의 일부만 업데이트할 수 있습니까? 아니면 전체 캐시를 업데이트해야 합니까?

11) 2단계 캐시는 어디에서 의미가 있고 어디에서 의미가 없습니까?

12) 캐시 모드: 각 캐시 모드는 서로 다른 캐싱 전략을 제공합니까?예를 들어, 캐시 모드가 "읽기 전용"인 경우 데이터베이스와 캐시의 동기화가 필요하지 않습니다. 다른 캐시 모드가 동기화를 제공합니까?동기화는 개발자가 직접 해야 한다고 생각했습니다.

Query Cache

13) 쿼리 캐시와 2차 레벨 캐시의 차이점은 무엇입니까? 제 의견으로는 쿼리 캐시 결과 세트는 값으로 저장되지만 ID로만 저장되지는 않습니다.쿼리가 다시 사용되고 결과 집합이 여전히 "정확"하면 ids에 속한 값이 2차 레벨 캐시에서 쿼리됩니다.

14) 쿼리 캐시의 경우 2단계 캐시를 사용해야 합니까?

15) 쿼리 캐시의 의미와 의미는 무엇입니까?

Spring

16) Spring은 메서드 캐싱보다 캐슁 가능성이 더 많습니까?

17) 메서드 캐싱이 최대 절전 모드 캐싱에 연결되지 않음

18) 그러나: 메서드의 경우 Ehcache와 같은 2단계 캐시가 필요합니다(최대 절전 모드에서도 사용 가능).

19) 데이터베이스 쿼리 없이 메소드 캐싱을 사용할 수 있습니까?

Getting mixed up

20) 최대 절전 모드의 경우 2단계 캐시로 ehcache를 사용하고, 메서드 캐싱의 경우 스프링의 경우 ehcache를 사용할 수 있습니까?뭔가 혼동될 가능성이 있습니까?

21) 1단계 캐시와 2단계 캐시를 사용할 때 데이터베이스를 쿼리할 때 결과가 1단계 또는 2단계 캐시 중 어디에서 발생합니까?1단계 캐시가 2단계 캐시와 함께 작동합니까?

22) 제가 언급한 캐시를 사용하여 혼동될 수 있는 다른 것은 없습니까? :-)

어떤 질문이든 대답해주셔서 감사합니다! :-)

최대 절전 모드는 1단계 캐시, 2단계 캐시, 쿼리 캐시를 지원합니다.

네.

Spring 자체는 다음과 같은 캐싱 가능성을 지원합니다. Method Caching만 지원합니다.

봄 3.1은 메서드에 대한 주석을 기반으로 하는 새로운 캐싱 추상화를 도입했습니다.

1단계 캐시는 모든 최대 절전 모드 응용 프로그램의 일부입니다.

네.

1단계 캐시는 모든 최대 절전 모드 세션에 대해 생성됩니다.

예, 언제든지 수동으로 지울 수 있습니다.

1단계 캐시에는 무엇이 저장됩니까?개체 또는 속성의 값?질문과 그 결과?

세션이 진행되는 동안 가져온 모든 개체의 맵으로, 동일한 개체를 ID로 두 번째 로드하면 L1에서 로드됩니다.

2차 레벨 캐시는 애플리케이션당 한 번씩 사용된다는 사실을 알게 되었습니다.그것은 거짓이 아닙니까?세션 팩토리당 ONCE를 사용하지 않습니까? 및: 다중 세션 팩토리 = 다중 2차 레벨 캐시가 가능합니까?

맞습니다, 일반적으로 애플리케이션(데이터베이스)당 세션 팩토리가 하나뿐이므로 바로 가기입니다.

2차 레벨 캐시에 저장된 내용: 제 생각에는 객체 자체가 아닌 하나의 레코드에 속하는 값입니다.

L1과 같은 것들이지만, 그들은 더 오래 삽니다.L2는 일반적으로 일부 산업용 캐시에 의해 지원되는 반면, L1은 지도에 불과합니다(스레드 세이프일 필요도 없습니다).게으른 관계를 포함하여 전체 엔터티를 저장합니다.

한 레코드의 값을 2차 레벨 캐시에 저장할 때 관련 값(외부 키를 통해 연결된 개체로부터)도 저장할 수 있습니까?

L2는 수동으로 관리하지 않고 자동으로 관리됩니다.

두 번째 레벨 캐시에서 한 개체의 값을 업데이트할 때 캐시에서 한 개체와 연결된 개체의 값도 업데이트할 수 있습니까?

위를 참조하십시오.

개체의 값이 변경될 때 2단계 캐시를 업데이트하려면 어떻게 해야 합니까?플래시? 캐시의 일부만 업데이트할 수 있습니까? 아니면 전체 캐시를 업데이트해야 합니까?

위를 참조하십시오. 최대 절전 모드가 이 문제를 해결해 줍니다.L2와 직접적으로 상호 작용하지 않습니다.

2단계 캐시는 어디에서 의미가 있고 어디에서 의미가 있습니까?

재다.기본 키 및 읽기-쓰기 팩터별로 많은 데이터를 읽는 애플리케이션에서 L2는 성능에 상당한 영향을 미칩니다.

캐시 모드: 각 캐시 모드는 서로 다른 캐싱 전략을 제공합니까?예를 들어 캐시 모드가 "읽기 전용"인 경우 데이터베이스와 캐시의 동기화가 필요하지 않습니다. 다른 캐시 모드는 동기화를 제공합니까?동기화는 개발자가 직접 해야 한다고 생각했습니다.

캐시 모드는 최대 절전 모드가 캐시 및 무효화를 위한 최상의 전략을 선택하는 데 도움이 됩니다.예를 들어 캐시가 읽기 전용인 경우 최대 절전 모드는 캐시를 비활성화하는 데 어려움을 겪지 않습니다.그러나 읽기 전용 캐시(읽기 전용 엔터티)는 물론 업데이트를 금지합니다.

쿼리 캐시와 2차 레벨 캐시의 차이점은 무엇입니까? 제 의견으로는 쿼리 캐시 결과 세트는 값으로 저장되지만 ID로만 저장되지는 않습니다.쿼리가 다시 사용되고 결과 집합이 여전히 "정확"하면 ids에 속한 값이 2차 레벨 캐시에서 쿼리됩니다.

맞아요, 하지만 이것은 매우 광범위한 주제입니다.특히 결과 집합은 여전히 "정확한" 부분입니다.

쿼리 캐시의 경우 2단계 캐시를 사용해야 합니까?

예, L2 캐시가 없으면 쿼리 캐시가 감지되지 않고 응용 프로그램 속도가 크게 느려집니다.

쿼리 캐시의 의미와 의미는 무엇입니까?

어려운 질문: 일반적으로 동일한 쿼리를 여러 번 실행하고 쿼리 매개 변수의 범위가 낮을 때(쿼리 매개 변수의 각 집합에 대해 모든 레코드 ID를 결과로 사용하여 새 쿼리 캐시가 생성됨).

Spring은 메서드 캐싱보다 캐싱 가능성을 더 많이 제공합니까?

아니요, 스프링은 당신만의 코드를 위한 접착제일 뿐입니다.

메서드 캐싱이 최대 절전 모드 캐싱에 연결되어 있지 않습니다.

봄은 겨울잠과 관련이 없어요, 그래서...

그러나: 메소드 캐시의 경우 ehcache와 같은 2단계 캐시가 필요합니다(최대 절전 모드에서도 사용 가능).

L2는 Hibernate 개념입니다.메서드를 캐시하려면 기본 캐시가 필요합니다.EhCache로 해주세요, 신경쓰지 마세요.물론 스레드 세이프여야 합니다.

데이터베이스 쿼리 없이 메소드 캐싱을 사용할 수 있습니까?

봄은 동면과 아무 상관이 없습니다.데이터베이스와 관련이 없는 계산을 캐시할 수 있습니다.

최대 절전 모드에 ehcache를 2차 레벨 캐시로 사용하고 방법 캐싱에 ehcache를 봄에 ehcache를 사용하는 경우 동일한 ehcache-instance를 사용할 수 있습니까?뭔가 혼동될 가능성이 있습니까?

동일하게 사용할 수 있습니다.CacheManager및 캐시 구성을 최대 절전 모드로 설정하여 배포를 용이하게 합니다.캐시 이름이 중복되지 않는 한 동일한 관리자 내에서 작동하더라도 캐시 이름은 완전히 독립적입니다.

1단계 캐시와 2단계 캐시를 사용할 때 데이터베이스를 쿼리할 때 결과가 1단계 또는 2단계 캐시 중 어디에서 발생합니까?1단계 캐시가 2단계 캐시와 함께 작동합니까?

추상이 새지 않는 한 그들은 그저 작동합니다 :-).기본 키로 쿼리할 때 먼저 L1이 검사되고(더 빠름), 다음으로 L2가 검사됩니다.

제가 언급한 캐시를 사용하여 혼동될 수 있는 다른 것은 없습니까? :-)

위를 보면 추상이 새는 경향이 있습니다.그러나 데이터베이스를 변경할 때 최대 절전 모드가 데이터베이스에 대해 모를 때 최악의 문제가 발생합니다.또한 적절한 복제 없이 클러스터링을 수행하면 두통이 발생합니다.가장 큰 문제는 잘못된 캐싱으로 인해 애플리케이션 속도가 느려지는 경우가 많다는 점입니다(쿼리 캐시가 가장 위험함).

스프링 및 2단계 캐시와 관련하여 스프링이 2L 캐시로 작동하는 데 도움이 될 수 있는 쿨 오픈 소스 프로젝트가 있습니다.

예: http://code.google.com/p/ehcache-spring-annotations/

우리는 그것을 생산 환경에서 사용하고 있고 그것은 우리의 삶을 훨씬 더 편하게 만듭니다.

언급URL : https://stackoverflow.com/questions/5405417/caching-with-hibernate-spring-some-questions

반응형