2011-10-17 4 views
1

시나리오 : 데이터베이스는 자주 업데이트되는 여러 카운터를 유지합니다.데이터베이스의 증가 카운터 필드 (로드 데이터베이스 저장)

업데이트 문은 간단하다 : 블록에서 업그레이드 할 수있는 방법을 찾을 적합 할 수 있도록

UPDATE table SET count = count + 1 

그러나, 업데이트가 (저장을 위해, (지속적으로 요구되지 쇼 업데이트 된 값) 매우 빈번하다 연결) :

짧은 기간 (1 초 또는 몇 초마다) 대신 +1, +1, +1, +1, +1, +1, +1, 장시간 블록으로 +80을 만듭니다 (매 5 분마다).

빈번한 연결을 저장하기 위해 카운터 값을 어떻게 업데이트 할 수 있습니까?

(참고 : 나는 비슷한 일을 찾아, MySQL 데이터베이스에 업데이트 LOW_PRIORITY 참조)

+0

뭐죠 문제? –

+0

DBMS를 지정하지 않았지만 트리거가 트리거를 지원하는 경우 트리거로 수행하면 투명하게 나타납니다. – Icarus

+0

하지만 ... 이러한 증분 값을 임시로 저장하는 위치는 어디입니까? 가장 좋은 방법은 무엇일까요? – Manz

답변

2

카운터 매우 간단한 일이다. 원하는 경우 텍스트 파일에 번호를 저장할 수 있습니다. 데이터베이스에서 쿼리를 실행하는 것보다 서버에서 로컬 파일에 저장하는 것이 일반적으로 쉽습니다. 이미 데이터베이스의로드를 줄이는 데 관심이있는 것 같습니다. 경쟁 조건에 대해 걱정할 경우 파일 블록 (예 : flock)을 사용하십시오. 그런 다음 스크립트가 적절하다고 생각되는 빈도 (아마도 cron job 사용)로 텍스트 파일과 데이터베이스를 동기화하게하십시오.

0

자동 응답 : 나는 (대신 파일의) 임시 저장을위한 신속하고 효율적인 시스템을 발견