2017-01-30 1 views
1

데이터가 테이블 집합에 있는지 여부를 알 수없는 상황이 있습니다. 그래서 지금은 모든 테이블에서 DELETE를 발행하고 있습니다. 따라서 단일 API 호출로 인해 Cassandra에서 약 30-50 개의 DELETE가 발생합니다. 최근에는 존재하지 않는 데이터에 대해 대부분의 DELETE가 발행되고 있습니다. 존재하지 않는 데이터에 대한 수백만 건의 삭제로 인해 Cassandra의 성능에 여전히 부정적인 영향을 미칠 수 있습니까? 존재 여부에 대한 확신이없는 데이터를 삭제하는 동안 '존재하지 않는 경우'를 사용해야합니까?Cassandra DELETE (IF EXISTS 포함 또는 제외)

답변

3

IF EXISTS이없는 경우 코디네이터가 직렬 일관성 및 paxos 프로토콜을 사용하기 시작하기 때문에 더 이상 시간이 오래 걸리며 다른 노드는 일괄 적으로 실행됩니다. 가벼운 트랜잭션 인 경우 1 %의 작업량과 함께 사용해야하며 정기적으로 수행해야합니다.

아직 삭제 표시가 많지 않으므로 데이터 모델 방법 및 삭제 방법에 따라 다릅니다. 어떤 스키마를주고, 문장을 삽입하고 지우면 그것에 대한 통찰력을 제공하는 것보다 더 기쁠 것입니다.)

+0

데이터가 존재하지 않는다면 우리는 여전히 삭제 표시 (초기 우려 사항이었습니다)가 있습니까? 그렇지 않다면 nevsv는 확인을 원합니다. – nimblerex

+0

"존재하지 않는 경우"가있는 경우 묘비가 없을 것입니다 ... 그러나 당신이 데이터 o.k를 모델링한다면 당신은 안전합니다. ...하지만 존재하지 않으면 클러스터의 모든 노드로 이동하여 코디네이터 노드에 상당한 부하를줍니다. 작업 부하의 1 % 이하인 경우에만 존재하지 않을 경우 사용하십시오. –

+0

DELETE가 우리 요청의 55 %임을 확인했습니다. 우리는 스키마를 다시 방문 할 계획입니다 :) 귀하의 의견을 보내 주셔서 감사합니다. – nimblerex

0

IF EXISTS는 행이 없으면 실패합니다.

삭제는 실제로 성능에 영향을 미치지 만 존재하지 않는 행을 삭제하면 아무것도 수행되지 않지만이 행을 검색하면 해당 행에 대한 삭제 표시가 생성되지 않습니다.