고객의 데이터베이스를 추가 서버로 이동 한 후 문제가 발생했습니다. 이는 사이트 성능에 긍정적 인 영향을 미쳤지 만 MyISAM에서 테이블 잠금에 문제가 있습니다. (MyISAM 대신 InnoDB를 사용한다고 들었지만 가까운 시일 내에 엔진을 변경할 수는 없습니다).
중재자가 기사 사이트에 대한 주석을 활성화 할 때 수행되는 업데이트 쿼리를 발견 할 수 있습니다. 이것은 과정이다 :
- 업데이트 쿼리가 처리됩니다
SET status = 1 WHERE id = 5
(인덱스가 설정 됨) - 페이지의 캐시 된 파일이 삭제됩니다
이 시점에서 전체 페이지가 느려집니다. 데이터베이스 자체가 몇 분 동안 사용 중입니다. 프로세스 목록을 몇 번 가져 왔으며 테이블 선택 잠금을 기다리는 상태에있는 다른 선택 쿼리의 약 60 개 항목을 보았습니다 .
1. 테이블에서이 업데이트 가 테이블 수준 잠금을 기다리는 article_comments
테이블의 select 문에 영향을주는 이유를 이해하지 못합니다 article
. processlist에서 거의 모든 대기 쿼리가이 테이블에있었습니다. 업데이트 / 삽입이 선택보다 선호된다는 사실에 대해 읽었으며 이러한 문제가 발생할 수 있지만 주석이 활성화 될 때 기사 테이블 자체는 업데이트되지 않으므로 선택이 대기하지 않아야합니다. 내가 그것을 이해하지 못했습니까?
2.이 동작을 방지하거나 최소한 더 나은 균형을 얻기 위해 InnoDB로 변경하는 것 외에 다른 것이 있습니까? 데이터베이스를 새 서버로 옮기기 전에이 문제가 나타나지 않았다는 사실에 매우 짜증이납니다. 구성이 잘못되었지만 식별 방법을 모르겠습니다.
key_buffer_size
는로 설정되었습니다 1GB
. 10GB
문제 를 줄이려면 늘리십시오.