안녕하세요. 보드를 하나 짜고 있는데 정말 해결할 수 없는 부분이 있어 디비관련 포럼을 찾다가 찾아오게 됐습니다.
문제의 테이블은 회원정보 테이블이며 30초 간격으로 활동여부를 체크하여 최근 활동 시간을 date_active 테이블에 업데이트해주고 있습니다.
테이블은 innodb로 구성되어 있으며 field 가 20개가 조금 넘습니다. 그리고 idx (unsigned int 10, Auto Increment) 가 primary key 로 걸려있으며 여타 중요한 필드는 인덱스가 걸려있습니다.
테스트한 테이블은 겨우 3개의 row 밖에 없습니다. 또한 동시접속자가 1~2명인 웹페이지입니다. (단, 그 서버에 돌아가는 다른 디비가 시피유를 많이 잡아먹는 상황입니다. 테이블이랑 디비는 완전히 다른 쪽입니다.)
아래는 슬로우쿼리 로그입니다.
# Time: 110814 1:05:32
# User@Host: testdb[testdb] @ localhost []
# Query_time: 4.616618 Lock_time: 0.000018 Rows_sent: 0 Rows_examined: 0
SET timestamp=1313251532;
update `member` set date_active = now() where idx = '2';
정말로 단순한 쿼리입니다. 그러나 로그를 보면 쿼리타임이 4.6초나 됩니다. 도대체 왜이러는걸까요?
셀렉트를 할때는 절대 슬로우쿼리가 발생하지 않습니다. 업데이트만 이럽니다. |