2010-07-25 5 views
1

쿼리/데이터베이스 성능에 대한 질문 :쿼리를 여러 번 실행하는 것 대 쿠키를 사용하는 것

사용자가 획득 한 "포인트"의 수를 기록하는 테이블이 있습니다. 1 점마다 1 행이 있습니다. 누군가 20 점을 얻으면 20 개의 행이 데이터베이스에 삽입됩니다. 누군가 20 점을 잃어 버리면 데이터베이스에 "-1"값이있는 행을 추가합니다. 따라서 포인트를 합산하는 간단한 SELECT 쿼리를 수행하여 누군가의 포인트 수를 계산할 수 있습니다.

잠재적으로 각 개별 사용자는 점수가 획득/손실되었음을 나타 내기 위해 수천 개의 행을 가질 수 있으며 데이터베이스에는 수천 명의 사용자가있을 수 있습니다.

웹 사이트의 "모든"페이지에 포인트 (로그인 한 사용자의 경우)를 표시해야합니다.

질문 : 모든 페이지로드시이 SELECT 쿼리를 수행하기 위해 데이터베이스 성능에 손상을 주거나 쿼리를 한 번 실행하고 쿠키에 값을 저장 한 다음 페이지에 쿠키 만 표시하는 것이 더 효율적입니까? 내가 예상하는 유일한 위험은 사용자의 브라우저가 쿠키를 지원하지 않고 쿠키가 항상 올바른 값을 표시하도록 업데이트된다는 것입니다.

답변

0

페이지 당 하나의 쿼리로드가 많지는 않지만 예를 들어 쿠키는 안전하지는 않지만 더 효율적입니다. 사용자가 데이터를 변경할 수 없도록 세션을 사용해야합니다.

1

이것은 매우 저렴한 조작입니다. 수천 명의 사용자가 클러스터 된 색인 (userid, point)을 사용하면 조회 속도를 높일 수 있습니다.

상당히 저렴한 조작이지만 추가 쿼리를 실행하는 데 약간의 시간이 걸립니다. 매우 높은 트래픽 볼륨을 예상하는 경우 사용자 이름 옆에있는 열에 사용자 테이블의 현재 지점을 저장할 수있는 대안이 있습니다. 각 페이지의 사용자 이름을 가져 와서 현재 지점을 거의 가져올 수 있다고 가정합니다. 비어 있는.

포인트 테이블은 포인트가 획득 된 이유와시기에 대한 참조 및 자세한 정보를 위해 보관할 수 있습니다.

관련 문제