EF 5.x 및 MVC3과 함께 MYSQL 사용. 나는 도시, 국가 콤보가있는 약 320 만 행의 테이블을 가지고있다. 도시의 검색어를 사용하고 jQuery/ajax를 사용하여 제안을 다시 보내는 클라이언트 측에 자동 완성 텍스트 상자가 있습니다. 이것은 내가 5 분 내 DB-컨텍스트 시간 제한을 설정 한 경우에도 타임 아웃캐시 정적 테이블 MySQL
CityData = DataContext.Citys.OrderBy(v => v.Country).ToList();
if (CityData.Any())
{
// Put this data into the cache for 30 minutes
Cache.Set("Citys", CityData, 30);
}
: 내가 직면하고
도전은 처음으로 사용하기 위해 사용될 때 나는 내 기억으로이 테이블을 캐시 것입니다. MySQL 클라이언트를 사용하여 DB에 대해이 SQL을 실행하면 모든 행을 가져 오는 데 약 3 분이 걸립니다.
이 데이터를 캐시로 읽는 가장 좋은 방법은 무엇입니까? 아니면 다른 것을해야합니까? 테이블을 MySQL 캐시 메모리에 직접 캐시 할 수 있습니까? 또는 캐시의 데이터를 사용하는 대신 용어 검색을 DB에 직접 보내야합니다.
자동 완성을 사용하는 경우 검색어를 사용하고 관련 결과 만 가져 오는 검색어가 없습니까? 또는 캐시 된 데이터에서 검색 쿼리를 실행하려고합니까? – MikeSmithDev
@MikeSmithDev는 좋은 지적입니다. 아마도 데이터베이스에 개별 쿼리를 캐싱하는 것이 좋습니다. 오랜 기간 동안 쿼리를 캐시 할 수 있기 때문에 잠시 후 많은 양의 검색이 데이터베이스에 전달되지 않습니다. 결과 json을 파일로 캐싱 할 수있는 옵션이 있습니다. 그렇게하면 json 파일을 요청하는 즉시 반환 할 수 있습니다. – cowls
예 캐시 된 데이터에 대해 검색어가 바뀜 –