監控 SAI 索引
虛擬表格和基於 JMX 的指標都可以用來監控叢集中的 SAI 索引。
SAI 虛擬表格
您可以參考以下 Apache Cassandra 虛擬表格中的資料,以確定使用 SAI 建立的索引的狀態
-
system_views.indexes
— 提供欄位索引層級的資訊,包括索引名稱、已索引 SSTable 數量、磁碟使用量和索引狀態。從索引狀態中,資料會顯示索引目前是否正在建立,以及是否可以查詢索引。當您
DROP
/ 重新建立 SAI 索引時,您不會被禁止輸入不使用索引的查詢。但是,您無法使用該 SAI 索引(基於同一欄位),直到它建立完成且可以查詢為止。若要判斷特定索引的目前狀態,請查詢system_views.indexes
虛擬表格。範例SELECT is_queryable,is_building FROM system_views.indexes WHERE keyspace_name='keyspace' AND table_name='table' AND index_name='index';
-
system_views.sstable_indexes
— 描述個別 SSTable 索引,並包含磁碟大小、最小/最大列 ID、最小/最大環狀記號和索引的寫入時間版本等資訊。 -
system_views.sstable_index_segments
— 描述 SSTable 索引的區段。它公開區段列 ID 偏移量和 SSTable 層級虛擬表格中的大部分資訊,特別是區段粒度。如需更多詳細資訊,請參閱 SAI 索引和 SSTable 的虛擬表格。
SAI 追蹤
SAI 提供追蹤功能,就像其他資料庫元件一樣。資訊由 system_traces
鍵值空間擷取。您可以在 CQLSH 中使用 TRACING ON
啟用追蹤,或在 Cassandra 驅動程式中使用 statement.enableTracing()
。
特定查詢篩選的列數將顯示在 CQL 查詢追蹤中。範例
Index query accessed memtable indexes, 2 SSTable indexes, and 2 segments, post-filtered 14 rows in 14 partitions, and took 88582 microseconds.
有關追蹤的詳細資訊,請參閱 CQL TRACING。
SAI 指標
SAI 提供許多指標,協助您監控索引的正常運作。
分類資料
-
全域索引指標
-
表格查詢指標
-
每個查詢指標
-
金鑰擷取指標
-
偏移擷取指標
-
記號擷取指標
-
每個索引的欄位查詢指標
-
每個索引的詞彙指標
-
範圍切片指標
例如,您可以使用指標取得自節點啟動以來 cycling.cyclist_semi_pro
的總分割區讀取數目前的計數。鍵值空間和表格已在 SAI 快速入門 中定義。此指標的 ObjectName
:org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=cycling,table=cyclist_semi_pro,scope=TableQueryMetrics,name=TotalPartitionReads
。
這些指標透過 JMX 公開,因此可以使用任何基於 JMX 的工具來監控。
全域索引指標
ObjectName: org.apache.cassandra.metrics,type=StorageAttachedIndex,name=<metric>
此節點的全域索引指標為
-
ColumnIndexBuildsInProgress
— 目前正在建立的個別磁碟欄位索引數目。 -
SegmentBufferSpaceLimitBytes
— 壓縮和索引建立期間用於緩衝 SSTable 索引區段的堆積限制。在 cassandra.yaml 中,
segment_write_buffer_space_mb
限制壓縮和初始建立期間用於建立磁碟欄位索引的堆積量。預設值為 1024 MB。
例如,如果只有一個欄位索引正在建立,SAI 可以緩衝至多 segment_write_buffer_space_mb
。如果每個表格有一個欄位索引在 8 個壓縮器中建立,每個索引將有資格在達到 (segment_write_buffer_space_mb / 8
) MB 時進行快取。
-
SegmentBufferSpaceUsedBytes
— 壓縮和索引建立期間目前用於緩衝 SSTable 索引區段的堆積。
在任何時間點,清除區段的最小大小(以位元組為單位)為 ( |
索引群組指標
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=IndexGroupMetrics,name=<metric>
給定鍵空間和資料表的索引群組指標
-
DiskUsedBytes
— 給定資料表 SAI 索引在磁碟上的大小(以位元組為單位)。 -
IndexFileCacheBytes
— 每個欄位索引的磁碟資料結構使用的記憶體大小(以位元組為單位)。 -
OpenIndexFiles
— 給定資料表 SAI 索引的開啟索引檔案數目。
金鑰擷取指標
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=KeyFetch,name=<metric>
給定鍵空間和資料表的金鑰擷取指標
-
ChunkCacheHitRate
— 針對給定資料表的查詢期間,金鑰的整體區塊快取命中率。 -
TotalChunkCacheLookups
— 針對給定資料表的查詢期間,金鑰的整體區塊快取查詢次數。 -
TotalChunkCacheMisses
— 針對給定資料表的查詢期間,金鑰的整體區塊快取遺漏次數。 -
ChunkCache(One|Five|Fifteen)HitRate
— 針對給定資料表的查詢期間,金鑰的 <N> 分鐘區塊快取命中率。
偏移量擷取指標
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=OffsetFetch,name=<metric>
給定鍵空間和資料表的偏移量擷取指標
-
ChunkCacheHitRate
— 針對給定資料表的查詢期間,分割鍵 SSTable 偏移量擷取的整體區塊快取命中率。 -
TotalChunkCacheLookups
— 針對給定資料表的查詢期間,分割鍵 SSTable 偏移量擷取的整體區塊快取查詢次數。 -
TotalChunkCacheMisses
— 針對給定資料表的查詢期間,分割鍵 SSTable 偏移量擷取的整體區塊快取遺漏次數。 -
ChunkCache(One|Five|Fifteen)HitRate
— 針對給定資料表的查詢期間,分割鍵 SSTable 偏移量擷取的 <N> 分鐘區塊快取命中率。
每個查詢指標
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=PerQuery,name=<metric>
給定鍵空間和資料表的每個查詢指標包括
-
RowsFiltered
— 自節點啟動以來,每個查詢過濾後列數的直方圖。 -
QueryLatency
— 整體查詢延遲百分比(以微秒為單位)和一/五/十五分鐘查詢處理量。 -
PartitionReads
— 每個查詢讀取的分割區數量的直方圖。 -
SSTableIndexesHit
— 每個查詢所讀取的 SSTable 索引數量的直方圖。 -
KDTreeChunkCacheLookups
— 每個查詢在讀取 kd 樹索引檔案時,區塊快取查詢數量的直方圖。 -
KDTreeChunkCacheMisses
— 每個查詢在讀取 kd 樹索引檔案時,區塊快取遺漏數量的直方圖。
表格查詢指標
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=TableQueryMetrics,name=<metric>
針對給定鍵空間和表格的表格查詢指標
-
TotalPartitionReads
— 自節點啟動以來,所有查詢的總分區讀取次數。 -
TotalQueriesCompleted
— 自節點啟動以來,成功完成的總查詢數。 -
TotalQueryTimeouts
— 自節點啟動以來,查詢總計逾時次數。 -
TotalRowsFiltered
— 自節點啟動以來,所有查詢過濾後的總列數。
表格狀態指標
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=TableStateMetrics,name=<metric>
針對給定鍵空間和表格的表格狀態指標
-
DiskPercentageOfBaseTable
— 每個表格的 SAI 大小,以表格大小的百分比表示。 -
DiskUsedBytes
— 每個表格的 SAI 索引在磁碟上使用的位元組大小。 -
TotalIndexBuildsInProgress
— 目前處於is_building
狀態的每個表格的 SAI 索引狀態。 -
TotalIndexCount
— 每個表格的 SAI 索引總數。 -
TotalQueryableIndexCount
— 目前處於is_querable
狀態的每個表格的 SAI 索引狀態。
權杖擷取指標
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=TokenFetch,name=<metric>
針對給定鍵空間和表格的權杖擷取指標
-
ChunkCacheHitRate
— 針對給定表格的查詢,分區金鑰權杖擷取的整體區塊快取命中率。 -
TotalChunkCacheLookups
— 針對給定表格的查詢,分區金鑰權杖擷取的整體區塊快取查詢次數。 -
TotalChunkCacheMisses
— 針對給定表格的查詢,分區金鑰權杖擷取的整體區塊快取遺漏次數。 -
ChunkCache(One|Five|Fifteen)HitRate
— 針對給定表格的查詢,分區金鑰權杖擷取的 <N> 分鐘區塊快取命中率。
權杖跳過指標
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,scope=TokenSkipping,name=<metric>
針對給定鍵空間和表格的權杖跳過指標
-
CacheHits
— 多重索引AND
查詢中,來自跳過令牌的快取命中次數。 -
Lookups
— 多重索引AND
查詢中,來自跳過令牌的查詢次數。
每個數字索引的欄位查詢指標
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,index=<index>,scope=ColumnQueryMetrics,name=<metric>
給定鍵空間、表格和索引的欄位查詢指標包括
-
KDTreeNiceTryLatency
— 對於數字索引,例如 快速入門 範例中的age_sai_idx
,此指標可用於呈現 kd 樹交集期間等待區塊快取未命中所花費時間的直方圖(以微秒為單位),以及一/五/十五分鐘區塊未命中傳輸量。如果在 kd 樹交集期間沒有快取未命中,則傳輸量為零。
每個字串索引的欄位查詢指標
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,index=<index>,scope=ColumnQueryMetrics,name=<metric>
給定鍵空間、表格和索引的欄位查詢指標包括
-
TermsLookupLatency
— 對於字串索引,例如 快速入門 範例中的country_sai_idx
,此指標顯示每一個/五個/十五分鐘查詢傳輸量的字詞查詢延遲百分比(以微秒為單位)。
每個字串索引的字詞指標
ObjectName: org.apache.cassandra.metrics:type=StorageAttachedIndex,keyspace=<keyspace>,table=<table>,index=<index>,scope=Terms,name=<metric>
對於字串索引,給定鍵空間、表格和索引的字詞指標
-
ChunkCacheHitRate
— 使用給定索引的字串索引查詢期間,字詞的整體區塊快取命中率。 -
TotalChunkCacheLookups
— 使用給定索引的字串索引查詢期間,字詞的整體區塊快取查詢次數。 -
TotalChunkCacheMisses
— 使用給定索引的字串索引查詢期間,字詞的整體區塊快取未命中次數。 -
ChunkCache(One|Five|Fifteen)HitRate
— 使用給定索引的字串索引查詢期間,字詞的<N>分鐘區塊快取命中率。