를 설정하려면이IO가 부여 데이터베이스 상태
public void do(RequestObject request, Callback<RequestObject> callback);
경우 요청이 처리 될 때 Callback
가 호출됩니다. 한 클라이언트는 데이터베이스에 요청 상태를 설정해야합니다. 클라이언트는 일부 항목을 가져와 위 메소드에 전달하고 콜백은 상태를 설정합니다.
항목 수가 적고 입출력이 느린 경우에는 정상적으로 작동합니다. 하지만 이제 IO는 속도가 빨라지고 상태는 데이터베이스에 자주 기록됩니다. 이로 인해 내 데이터베이스 (MySQL)가 많은 디스크 읽기 쓰기 호출을 수행하게됩니다. 내 디스크 사용량이 지붕을 통과합니다.
저는 상태의 설정을 집계 할 생각 이었지만 신뢰할 수없는 권력은 그럴듯한 해결책이 아닙니다. 어떻게 이것을 다시 디자인해야합니까?
프로세스가 나는 값을 삽입 및 업데이트가있을 때, 나는 항목을 가져오고 항목을 업데이트 시작 EDIT
. @ user2612030 귀하의 질문에 나를 믿어, 최대 절전 모드를 사용하는 것은 그것이 필요한 것보다 더 많은 읽기를 일으킬 수 있습니다.
디스크 드라이브를 SSD로 업그레이드 할 수는 있지만 그렇게하는 것이 좋습니다. 나는 비늘의 해결책을 원한다.
상태를 저장 한 후 사용 사례는 무엇입니까? 얼마나 빨리 쿼리해야합니까? – yegodm
나는 그것을 쿼리하여 작업의 상태를 확인한다. 대량 작업이며 클라이언트는 상태를 확인해야합니다. –
결국 상태 값을 변경할 수 있습니까? 클라이언트가 상태를 설정하지만 데이터베이스에 즉시 저장되는 것이 아니라 영구적 인 디스크 대기열과 같은 일부 빠른 내구성 스토리지에 저장 될 수 있습니다. 인스턴스가 실행되는 동안 메모리에서 /에서 상태를 캐시하고 제공 할 수 있으며 대기열에서 백그라운드로 데이터베이스를 대량 업데이트 할 수 있습니다. 다시 시작하면 큐에서 이벤트를 재생하여 데이터베이스와 캐시를 동기화해야합니다. – yegodm