우리는 대규모의 Amazon RDS 인스턴스에서 실행되는 MySQL 데이터베이스에 모든 영구 데이터를 저장하는 Facebook 게임을 보유하고 있습니다. 우리 테이블 중 하나는 2GB 크기입니다. 나는 몇 초 이상 걸릴 해당 테이블에 어떤 쿼리를 실행하면, 우리의 게임에 의해 수행되는 SQL 작업 오류와 함께 실패합니다SQL 쿼리가 우리 게임을 깨뜨립니다! (백엔드 서버 용량 있음)
HTTP/1.1 503 서비스를 사용할 수 없음 : 백 엔드 서버 용량
에있다이것은 분명히 우리 게임을 가져옵니다!
이 기간 동안 RDS 인스턴스의 CPU 사용량을 모니터링했지만 스파이크는 있지만 50 %를 넘지 않았습니다. 이전에는 크기가 더 작은 인스턴스 크기 였고 100 %를 기록 했으므로 문제를 해결하기 위해 더 많은 CPU 용량을 던지기를 기대했습니다. 이제는 열린 연결의 수가 문제라고 생각합니다. 그러나 나는 8 개월 정도만 SQL을 사용하여 작업 했으므로 MySQL 구성에 대한 전문 지식이 없습니다.
이러한 쿼리가 서버에 과부하되는 것을 방지하기 위해 변경할 수있는 구성 설정이 있습니까? 아니면 게임이 정상적으로 실행되고 있지 않아야합니까?
저는 쿼리를 실행하기 위해 MySQL Workbench를 사용하고 있습니다.
도움이 될 매우 감사하겠습니다 - 고마워!
는 편집 : ....
SELECT *
FROM BlueBoxEngineDB.Transfer
WHERE Amount = 1000
AND FromUserId = 4
AND Status='Complete';
표는 다음과 같은 예를 들어 보이는 여기
이있어 :
당신은 고 가용성 RDS를 실행하고 최대 설정하는 것이 정말해야TransferId Started Status Expires FromUserId ToUserId CurrencyId Amount SessionId
1177 2012-06-04 21:43:18 Added 150001 2 4 1 12156
1179 2012-06-04 21:48:50 ISF 150001 2 4 1 12156
1181 2012-06-04 22:08:33 Added 150001 2 4 25 12156
1183 2012-06-04 22:08:41 Complete 150001 2 4 50 12156
1185 2012-06-04 22:08:46 Added 150001 2 4 200 12156
큰 테이블에 이미 적절한 인덱스가 있다고 가정합니다. –
테이블이 2GB 인 경우에도 일반적으로 검색어가 복잡해지지 않으면 검색어에 몇 초 이상 걸리지 않습니다. 예제 쿼리, 해당 쿼리의'EXPLAIN' 및 테이블 구조를 게시하십시오. 쿼리를 실행중인 테이블에 쓰는 게임에서 오는 쿼리입니까? 그렇다면 잠금 문제 일 수 있습니다. –
방금 다음과 같은 간단한 쿼리를 사용했습니다. SELECT * FROM BlueBoxEngineDB.Transfer WHERE Amount = 1000 AND FromUserId = 4; – TimH