2017-11-02 11 views
0

I 카산드라 테이블, 여기, 데이터의 테라 바이트 (카산드라 버전 2.0) 내가 일부 데이터를 삭제할 확인 테이블 크기 역사적으로

"my_table" (
    key ascii, 
    timestamp bigint, 
    value blob, 
    PRIMARY KEY ((key), timestamp) 
) 

같은 스키마가 모습입니다했지만 전에 얼마나 많은 디스크 공간을 재 확보할지 예측하려고합니다.

JMX 측정 항목의 통계는 지난 2 주 동안 만 제공되므로별로 유용하지 않습니다.

특정 데이터 집합에서 사용되는 공간의 양을 확인하는 방법이 있습니까 (예 : 타임 스탬프 < 1000)?

쿼리 결과 집합 크기를 확인하는 방법이 있는지 궁금 해서요. select * from my_table where timestamp < 1000과 같은 작업을 수행하고 결과가 차지하는 바이트 수를 확인하십시오.

답변

1

데이터에서 디스크의 크기를 볼 수있는 메커니즘이 없으므로 압축과 여러 단계로 인해 영향을주는 수준과 요청을 조정하는 사람이 상당히 멀리 떨어져있을 수 있습니다.

삭제를 실행해도 즉시 디스크 공간이 줄어들지는 않습니다. C *는 데이터를 삭제하지 않으며, sstables는 변경 불가능하며 변경할 수 없습니다. 대신 gc_grace_seconds가 사라진 후 삭제 표시 항목을 씁니다. sstables가 병합 될 때 삭제 표시 + 데이터가 결합되어 삭제 표시 만됩니다. gc_grace_seconds가 지나면 압축 중에 더 이상 삭제 표시가 복사되지 않습니다.

gc_grace는 복구가 (매주 예정되어야 함) 모든 복제본에서 삭제 된 것을 절대적으로 보장하지 않기 때문에 분산 시스템에서 삭제 손실을 방지하기위한 것입니다. 복제본에서 삭제 표시가 보이지 않고 삭제 표시를 제거하면 데이터가 다시 나타납니다.

1

아니요.

sstablemetadata을 사용하면 mc-####-big-data.db 파일에 삭제 표시 삭제 시간, 최소 시간 소인 및 최대 시간 소인을 찾을 수 있습니다.

또한 HDD 공간이 부족한 경우 nodetool cleanup, nodetool clearsnapshot 그리고 마지막으로 nodetool repair을 고려하십시오.

+0

참고로 nodetool clearsnapshot은 '백업'을 제거 할 수 있습니다. 복구 할 수 있도록 표를 자르고 놓을 때 작성됩니다. 하드 드라이브 공간을 찾고 있다면 안전하게 삭제할 수 있습니다. – Highstead