2017-02-09 76 views
1

我想知道如何在CQL列切片WHERE條款會影響讀取性能。卡桑德拉是否有一定的優化,這是能夠僅提取特定的列與值或具有檢索行的所有列,並檢查了一個又一個?例如:我有一個主鍵(key1,key2),key2是集羣鍵。我只想找到匹配某個key2的列,比如value2?卡桑德拉CQL柱片和讀取路徑混亂

回答

0

卡桑德拉保存數據作爲細胞 - 爲一個鍵+列中的每個值是細胞。如果您一次爲鍵保存多個值,它們將放在同一個文件中。此外,由於卡桑德拉寫入sstables,你可以有幾個值保存在不同的文件相同的鍵列/單元格,卡桑德拉會閱讀所有這些,並返回最後寫入一個,直到comperssion或維修時發生,和無關值被刪除。

關於刪除/讀取/墓碑好文章: http://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html

+0

我讀[文章](https://wiki.apache.org/cassandra/ReadPathForUsers),它說是不同的:然後,我們掃描的分區索引,它將在SSTable中提供偏移量,我們可以在其中找到與分區鍵相關的數據。 然後我們看從內存MemTable中的數據,並與來自SSTables數據合併這一點。數據是逐個單元格合併的,每個單元格的時間戳與最新的時間戳進行比較。墓碑被忽略。 –

+0

關於墓碑 - 他們不會以您認爲的方式忽略它。示例:您有一個密鑰,並且已經插入/更新了3次,之後將其刪除。因此,理論上,您可以擁有4個「值」,即3個值和墓碑。當您對密鑰請求的值時,發動機會經過所有4「價值觀」,並確定最新的一個,如果這是墓碑,你將得不到行/值,但這並不意味着該行WASN」讀卡桑德拉。 – nevsv