2011-04-08 3 views
1

이것은 바보 같은 질문 일 수 있습니까? 하지만 X에 대한 모든 레코드 항목을 가져 오기 위해 데이터베이스에 대한 SQL 쿼리를 수행하고 로컬 변수 "myRecords"에 저장 한 다음 "myRecords"변수에 포함 된 결과를 필터링 할 수 있습니까? (데이터베이스에 여러 라운드/쿼리를 저장합니다.)변수에 저장하여 SQL 쿼리 줄이기?

이것도 좋은 생각입니까? 또는 나쁜 아이디어?

답변

3

나는 당신이 캐싱의 고전적인 사례를 언급한다고 믿는다. 그런 접근 방식의 구현을 안내할만한 많은 자원이있다. 보다 구체적인 답변을 얻으려면 해결하려는 문제에 대한 자세한 정보를 제공해야합니다. 주제는 거대하며 환경의 매개 변수에 따라 매우 복잡 할 수 있습니다.

0

나는 K Ivanov에 동의한다. 단지 몇 가지를 추가하고 싶었습니다.

이것은 엄청난 성능 개선이나 완전한 재앙이 될 수 있습니다. 드물게 두 사람의 중간에 있습니다.

이 주제를 수행하기 전에 몇 가지 작업을 수행하는 것이 좋습니다. 먼저 데이터베이스와 쿼리를 프로파일 링하십시오. 새롭거나 변경된 인덱스 또는 성능 향상으로 이어질 수있는 약간 다른 테이블 디자인과 같은 영역을 찾아보십시오.

몇 가지 문제가 있습니다. 첫 번째는이를 캐시 할 시스템의 메모리 요구 사항을 다룹니다. 데이터베이스 서버가 이미 메모리 제약이있는 경우 일부 중간 캐시를 ON으로 설정하는 것은 바람직하지 않습니다.

웹 서버에 데이터를 캐시하면 응용 프로그램의 메모리 사용량이 급격히 증가 할 수 있습니다. 또한 캐싱 전략 및 데이터의 특성에 따라 신속하게 오래되어서 나쁜 결과를 초래할 수 있습니다.

다른 경로를 시도하기 전에 문제를 완전히 이해했는지 확인하십시오. 인덱스를 조정하고 DB 서버에 RAM을 추가하는 것만 큼 간단 할 수도 있습니다. 이들은 상대적으로 구현하기가 쉽지 만 견고한 캐싱 메커니즘은 이익이되거나 더 큰 문제를 일으킬 수 있습니다.