2015-09-11 95 views
1

我有一個卡桑德拉日誌表,現在我想搜索表的行數。有沒有更好的方法來計算卡桑德拉鍵?

首先,我使用select count(*) from log,但它非常非常慢。 然後我想使用counter類型,然後問題即將到來。我的表是TTL表,所有行都保持一個小時,使用counter類型變得非常困難。

+0

你可以嘗試從限制條款的日誌計數(*),它會很快。 –

回答

1

Cassandra對於執行表掃描操作效率不高。它擅長攝取大量數據,然後訪問數據的小片而不是整個表。

因此,如果您想要在不使用計數器的情況下對鍵進行計數,則需要將表分爲足夠小以便快速處理的數據塊。例如,如果要使用count(*),則應該只在單個分區上使用它,並將分區大小保持在大約100,000行以下。

對於您的情況,您可能希望按小時對數據進行分區(或者如果您每秒插入大量日誌行,則可能需要5分鐘的間隔)。

如果您要連續插入大量數據,請小心使用一小時的TTL,因爲這可能會導致很多墓碑。爲避免構建墓碑,您應該在小時過後刪除每個小時的分區。