그림 10-37은 이를 표현한 것입니다.
▲ 그림 10-37 DB에 레코드를 추가하는 시간에서 디스크 I/O는 큰 비중을 차지
DB에 쌓인 데이터에서 통계 정보를 추출할 때는 더 심각합니다. 데이터베이스에서 로그 분석을 수행하는 동안 DB는 굉장히 오랜 시간(10분)이 소요됩니다. 이 시간 동안 데이터베이스 부하는 최고조를 유지하기 때문에, 이 시간 동안 데이터베이스에 로그를 기록하는 시간은 평소보다 많이 느립니다. DB에 게임 플레이어 정보가 있는 경우, 게임 서버가 DB에 플레이어 정보를 읽거나 쓸 때 평소보다 많이 느려집니다. 따라서 로그를 담는 DB에 순간적으로 디스크 I/O가 많이 발생합니다. 또 DB를 액세스하는 프로그램 모듈(ODBC 또는 ADO) 자체가 연산량이 많으므로, DB에 로그 쌓기 질의를 수행하는 로그 서버는 따로 두면 좋습니다. 즉, 게임 서버와 로그 DB 서버는 분산해야 합니다.
▲ 그림 10-38 게임 서버와 로그 서버 분리
➊ 게임 서버에서 로그를 쌓을 일이 있으면, 로그 서버에 로그를 기록하라고 지시합니다.
➋ 로그 서버는 로그 DB에 로그를 쌓는 질의 구문을 실행합니다.