데이터베이스에 액세스하기 위해 Entity Framework를 사용하는 .net 클라이언트 응용 프로그램을 개발 중입니다. 다중 사용자 응용 프로그램으로 (때로는) 몇 시간 동안 변경 사항이 없으며 한 번에 수백 개의 변경 사항이있는 경우도 있습니다.데이터베이스 변경시 캐시 다시로드
사용자에게 표시하고 수행해야하는 검사가 있기 때문에 꽤 많은 데이터를 캐시해야합니다. 한 응용 프로그램 인스턴스 내에서 무언가가 바뀌면 다른 캐시를 업데이트하는 캐시 문제를 해결했습니다. 그러나 응용 프로그램의 다른 인스턴스에서 변경이 발생할 때 가장 좋은 방법은 무엇인지 확신 할 수 없습니다.
SqlDependency
을 사용하여 내 캐시를 무효화하려고했지만 한 비트 만 변경된 경우 대용량 데이터를 다시로드해야합니다. 성능면에서는별로 좋지 않습니다. 또한 SqlDependecy
을 사용하는 응용 프로그램에서 데이터를 변경하면 한 번의 변경으로 캐시가 두 번 업데이트됩니다.
나는 캐싱의 양으로 무언가를 개발하지 않았기 때문에 나는 최선의 방법을 잃었습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
왜 단일 비트를 변경하면 많은 양의 데이터를 다시로드해야합니까? – Paparazzi
어쩌면 내가 뭔가 잘못하고 있지만 알림을 받았을 때 정확히 무엇이 변경되었는지 알 수 없어 변경된 데이터를 다시로드 할 수 없습니다. SqlCommand에서 변경 될 수있는 모든 것을 다시 적용해야합니다. 예를 들어 테이블 'A'의 모든 요소는 fk ... = x입니다. 꽤 많은 데이터가 될 수 있습니다. – Patrick
이해하지만 단일 비트가 여전히 모든 데이터를 다시로드하도록 강요하지는 않습니다. 읽은 데이터를 읽고 변경된 데이터 만 업데이트 할 수 있습니다. 또는 변경 사항을 기록하는 SQL에 트리거를 구현하여 해당 테이블 만 확인하면됩니다. – Paparazzi