2016-06-22 3 views
0

나는 모든 테이블에 약 1MB의 데이터를 가진 MemSQL 서버를 가지고 있습니다. 또한 수용 가능한 메모리 사용량이 매우 낮습니다. 그러나 문제는 서버가 최근에 디스크 공간이 부족하다는 것입니다. 자세한 내용을 살펴보면 다음과 같은 디스크 공간 사용을 찾을 수 있습니다. 같은 많은 파일이 포함MemSQL 서버가 큰 디스크 공간을 사용합니다.

52G  /var/lib/memsql/master-3306/plancache/ 
34G  /var/lib/memsql/leaf-3307/plancache/ 

Select_digin_componentheader_72f4f4454iusudf9sdf98tkjnm432436thss4dgfdhjfd45tr44.cc Select_digin_componentheader_72f4f4454iusudf9sdf98tkjnm432436thss4dgfdhjfd45tr44.ok Select_digin_componentheader_72f4f4454iusudf9sdf98tkjnm432436thss4dgfdhjfd45tr44.so

아래의 경우 digin_componentheader 우리 테이블 이름 중 하나와 파일 A는 위의 s는 다른 테이블에도 존재합니다. 우리는 많은 삽입 작업을 수행하지만 5 분 후에는 삭제 작업을 수행하여 6 개월 동안 수행 한 유일한 작업 만 수행합니다.

구성을 변경하지 않았으며 memsql 서버에 모든 기본 구성이 있습니다. 아무에게도 이것을 저장하는 데 90GB가 필요한 이유를 설명 할 수 있습니까? 또는 구성 문제가 있습니까?

답변

2

MemSQL은 자체적으로 plancache의 파일을 삭제하지 않습니다. 그들은 쿼리를 실행해야합니다. 오래된 \ stale 파일은 더 이상 실행하지 않을 수도있는 쿼리 (또는 ALTER 테이블 작업 이후)에 대해 시간이 지남에 따라 누적 될 수 있습니다. 서버가 중지되면 plancache 디렉토리의 내용을 삭제할 수 있습니다 (MemSQL이 실행 중일 때 수행하지 마십시오). MemSQL은 재시작 후 쿼리가 처음 실행될 때 필요한 파일을 모두 다시 작성합니다. 이 방법을 사용하면 재시작 후 쿼리를 처음 실행하게됩니다 (코드 생성 비용 - MemSQL 5에서 훨씬 빠름).

2

MemSQL이 모든 쿼리에 대해 생성하고 생성 한 코드입니다. plancache 디렉토리의 내용을 기반으로 MemSQL 4를 실행 중입니다. 쿼리를 컴파일하기 위해 g ++를 사용하지 않는 MemSQL 5로 업그레이드하는 것이 좋습니다.

+0

감사합니다. 그러나이 파일 생성을 비활성화하거나 업그레이드하지 않고 불필요한 경우 자동으로 삭제하는 방법이 있습니까? –

+0

아쉽게도 MemSQL은 각 파일이 개별 쿼리이기 때문에 이러한 파일이 쿼리를 실행하도록 요구합니다. 자동 삭제의 경우 엔진이 수행하지 않는 동안 plancache ('show plancache')를 쿼리하고 나열되지 않은 쿼리에 해당하는 파일을 삭제할 수 있습니다. 쿼리 -> 파일을 상관 시키려면'.cc' 파일의 시작 부분을 읽어야 할 수도 있습니다. –

관련 문제