2017-03-20 2 views
1

Ich versuche die maximale Anzahl von Suchvorgängen zu verstehen, die bei einer Leseoperation in Cassandra benötigt werden. Ich schaute auf mehrere Online-Artikel einschließlich dieser:Cassandra - Anzahl der Suchläufe in einer Leseanforderung

Nach meinem Verständnis sind zwei Datenträger sucht im schlimmsten Fall erforderlich. Eine ist zum Lesen des Partitionsindex und eine andere zum Lesen der tatsächlichen Daten von der komprimierten Partition. Der Index der Daten in komprimierten Partitionen wird aus den Kompressionsoffset-Tabellen erhalten (die im Speicher gespeichert sind). Bin ich hier richtig? Wird es jemals einen Fall geben, wenn mehr als 1 Suchlauf benötigt wird, um die Daten zu lesen?

Antwort

0

Ich poste hier die Antwort, die ich von Cassandra User-Community-Thread, falls jemand empfangen sonst braucht es:

youre right – one seek with hit in the partition key cache and two if not. 
Thats the theory – but two thinge to mention: 

First, you need two seeks per sstable not per entire read. So if you data is spread over multiple sstables on disk you obviously need more then two reads. Think of often updated partition keys – in combination with memory preassure you can easily end up with maaany sstables (ok they will be compacted some time in the future). 

Second, there could be fragmentation on disk which leads to seeks during sequential reads. 

Note: Each SSTable has it's own partition index. 
Verwandte Themen