
이것을 이해하는 데 도움이 될 수 있습니다. 저는 100GB의 스토리지를 갖춘 RDS MySQL 인스턴스(SSD의 db.m3.large)를 실행하고 있습니다.
내 기억력이 50% 정도 남아 있다는 사실이 조금 놀랐습니다.
차트 http://f.cl.ly/items/2130242A0K040E392h0L/10.png
제가 뭔가 잘못하고 있는 게 틀림없어요. 왜냐하면 이 시점에서는 서버가 전혀 많이 사용되지 않기 때문입니다. 지난 2주간의 그래프는 다음과 같습니다.
2주 사용량 차트 http://f.cl.ly/items/2y411W0z0I1V1T0T3O3T/11.png
보시다시피 CPU는 대부분 0%이고, DB 연결도 낮으며, 쓰기/읽기 작업도 낮습니다.
나는 모든 InnoDB 테이블을 실행합니다. 마음에 떠오르는 유일한 것은(메모리를 너무 많이 늘릴 수 있었던) 내 분석 기능입니다. 분석 계산의 일일 요약을 저장하는 테이블(샤딩)이 하나 있습니다. 해당 테이블에는 4개의 mediumtext
필드가 있으므로 해당 테이블에 Barracuda 파일 형식을 사용하도록 InnoDB를 변경했습니다 row_format=compressed
. 이는 해당 인스턴스의 기본값이 아닌 유일한 DB 매개변수입니다(다른 모든 항목은 즉시 사용 가능).
해당 테이블에는 행이 많지 않으며 현재 가장 큰 행은 최대 35kb입니다. 가장 큰 클라이언트에 대한 행은 56개입니다(저도 클라이언트가 많지 않습니다). 그래서 이것이 그 원인이 될 수 있다는 것이 나에게는 놀랍습니다 ...
내 기억력이 왜 그렇게 높을 수 있는지(일명 내가 망친 것)에 대해 알려주실 수 있나요? MySQL이 내 분석 쿼리/결과를 캐시하기 때문입니까? 아니면 다른 것입니까?
답변1
무슨 일이 일어나고 있는지에 대한 힌트는 "사용 가능한 메모리" 차트에 있습니다. 데이터베이스가 프로세스 메모리에 많은 테이블 데이터와 인덱스 데이터를 보유하고 있다면 그 숫자는 실제보다 훨씬 작을 것입니다. 현재로서는 Freeable이 Total만큼 큽니다.
설계된 대로 작동하므로 여기에는 아무것도 표시되지 않습니다. PANIC = FALSE로 설정하세요.