Help us understand the problem. What is going on with this article?

【Cassandra】nodetool cfstats / tablestats

More than 1 year has passed since last update.

0. はじめに

・本記載は、ディストリビューション、バージョン = DSE 4.8.16をベースに記載
・Cassandra3.0以降は、コマンドがnodetool tablestatsに改められているので注意

1. nodetool cfstats / tablestats 概要

・Cassandra Ver3.0以降 (DSE 5.0.x以降)で、cfstatsからtablestatsにコマンドが改められている。
・1つ以上のテーブルに関する統計を取得
 ( keyspace, table名の指定を省略するとすべてのテーブルに関する統計を出力 )
・ノードごとの統計を出力
 ( 統計値はクラスタ内で一意でない。 )
・カウンタ値はノードのCassandra起動時にリセット
 データフラッシュ時、またはCompactionでSSTablesを変更した際に統計を更新 ( するらしい )

2. 統計値の説明

気になる統計値についてのメモ

① Space used (live), Space used (total)

Space used (live)は、SSTableのディスク領域のバイト数で、Space used (total)は、including obsolete SSTables waiting to be GCdらしい。

② Number of keys (estimate) / Number of partitions (estimate)

コマンド名と同様、Cassandra Ver3.0以降 (DSE 5.0.x以降)で、Number of keysからNumber of partitionsにコマンドが改められている。

Number of keys (estimate)は、paritionの数の推定値を報告してくれる。
( clustering keyで複数行の場合でも、あくまでparitionの数、datastaxの管理者ガイドでも「プライマリ・キーの数ではありません。これによって、テーブル内の推定パーティション数がわかります。」と記載されている。 )

( partition key 1column, 10 parition =10行 の場合 )

CREATE TABLE ctest01.test01 (
    pkey1 text PRIMARY KEY,
    testdata text,
    uid timeuuid
) 

cqlsh:ctest01> select * from test01;

 pkey1                              | testdata     | uid
------------------------------------+--------------+--------------------------------------
                         \x13\x1cM- | | \nz@Qj\x1c | d0ad65f0-df07-11e8-db82-ebecdb03ffa5
 \x0ed(\x1f`\x1dM\x1etA\x0c7g\x1b"{ |  \x0fKYehv(E | 3e55a540-988c-11d3-db82-ebecdb03ffa5
     s\x0cqCGM{E^L_\x17\x1eE!\x1c3t | | \nz@Qj\x1c | c25547d0-f9e6-11e3-db82-ebecdb03ffa5
               {\x03],\x04&{r4#\x14 |  E}P^k\x7fQE | 33bf7590-28fa-11e7-db82-ebecdb03ffa5
                           |Q\x1bGF |  P+|u\x0bQ-X | 9607d760-3493-11e3-db82-ebecdb03ffa5
                    \x7fpJW*\x1d, a | | \nz@Qj\x1c | 79346760-06ba-11e6-db82-ebecdb03ffa5
                            YC\x04^ |  \x0fKYehv(E | c03a3d30-e7bd-11be-db82-ebecdb03ffa5
        C\x01%~\x1f5\x15p\x14XR\x04 |  E}P^k\x7fQE | 1fa01d60-2f3a-11d0-db82-ebecdb03ffa5
                           l\I5\x11 |  \x0fKYehv(E | 0f9f76e0-5d72-11e2-db82-ebecdb03ffa5
                            jf\x01@ |  \x0fKYehv(E | 656a0bf0-490d-11e6-db82-ebecdb03ffa5

(10 rows)
cqlsh:ctest01> 

# nodetool flush
# nodetool cfstats ctest01.test01
Keyspace: ctest01
        Read Count: 0
        Read Latency: NaN ms.
        Write Count: 10
        Write Latency: 0.0106 ms.
        Pending Flushes: 0
                Table: test01
                SSTable count: 1
 :
途中略
 : 
                Number of keys (estimate): 10
 :
途中略
 : 
# 

( partition key 2column, 10 parition =10行 の場合 )

CREATE TABLE ctest01.test02 (
    pkey1 text,
    pkey2 text,
    testdata text,
    uid timeuuid,
    PRIMARY KEY ((pkey1, pkey2))
)

cqlsh:ctest01> select * from test02;

 pkey1                              | pkey2                                 | testdata     | uid
------------------------------------+---------------------------------------+--------------+--------------------------------------
                            jf\x01@ |                               hA\x001 | .dap\x1fa\rh | ca7840b0-8a60-11b7-db82-ebecdb03ffa5
                         \x13\x1cM- |         fKu2BON8JR_`oG\x1aA\x10@\x1cI |  E}P^k\x7fQE | 79a38860-363e-11b6-db82-ebecdb03ffa5
        C\x01%~\x1f5\x15p\x14XR\x04 |         ltv*F\x05=k%o\x0fY9ngFx=\x18O |  P+|u\x0bQ-X | 59eae4f0-0f68-11d6-db82-ebecdb03ffa5
                           l\I5\x11 |                                    DD |  \x0fKYehv(E | 2e0fd9a0-7167-11c8-db82-ebecdb03ffa5
                           |Q\x1bGF |   piE\x1cl\x1a<"{\x06\x1d_K%ESh\x1fzQ | | \nz@Qj\x1c | 893da570-c9a5-11c1-db82-ebecdb03ffa5
               {\x03],\x04&{r4#\x14 |                                 \x1c- |  \x0fKYehv(E | 1aa10190-39db-11d8-db82-ebecdb03ffa5
                    \x7fpJW*\x1d, a |                   |`]\x07\x13Lna<\x07 |  P+|u\x0bQ-X | 7a7bb350-890a-11c1-db82-ebecdb03ffa5
 \x0ed(\x1f`\x1dM\x1etA\x0c7g\x1b"{ | a\nQ{h$"\x0cu\x17\x10g\x12z8l\x03\x08 | | \nz@Qj\x1c | 2e078210-5036-11ba-db82-ebecdb03ffa5
     s\x0cqCGM{E^L_\x17\x1eE!\x1c3t |                      VO\rp\x16O\x02Cr | | \nz@Qj\x1c | ee0ace30-5b4f-11ca-db82-ebecdb03ffa5
                            YC\x04^ |                Fhx_n\x7f'"\x0eK\x116= |  E}P^k\x7fQE | 918c8970-57cd-11bc-db82-ebecdb03ffa5

(10 rows)
cqlsh:ctest01> 

# nodetool flush
# nodetool cfstats ctest01.test02
Keyspace: ctest01
        Read Count: 0
        Read Latency: NaN ms.
        Write Count: 10
        Write Latency: 0.0116 ms.
        Pending Flushes: 0
                Table: test02
                SSTable count: 1
 :
途中略
 : 
                Number of keys (estimate): 10
 :
途中略
 : 
# 

( partition key 2column + clustering key 1column, 10 parition =10行 の場合 )

CREATE TABLE ctest01.test03 (
    pkey1 text,
    pkey2 text,
    ckey1 text,
    testdata text,
    uid timeuuid,
    PRIMARY KEY ((pkey1, pkey2), ckey1)
) 

cqlsh:ctest01> select * from test03;

 pkey1                              | pkey2                                 | ckey1             | testdata     | uid
------------------------------------+---------------------------------------+-------------------+--------------+--------------------------------------
                            jf\x01@ |                               hA\x001 | |\\x0eZy\x1e\x1cV |  E}P^k\x7fQE | 203db9a0-60e6-11b9-db82-ebecdb03ffa5
                         \x13\x1cM- |         fKu2BON8JR_`oG\x1aA\x10@\x1cI |        L"eJ\N\x1e |  P+|u\x0bQ-X | 729f7240-9755-11de-db82-ebecdb03ffa5
        C\x01%~\x1f5\x15p\x14XR\x04 |         ltv*F\x05=k%o\x0fY9ngFx=\x18O |      G`&\t\x1a4XC |  E}P^k\x7fQE | 1f1d7f70-e8e1-11e4-db82-ebecdb03ffa5
                           l\I5\x11 |                                    DD |       KAP>sx\x046 | | \nz@Qj\x1c | aacc8400-ba03-11bd-db82-ebecdb03ffa5
                           |Q\x1bGF |   piE\x1cl\x1a<"{\x06\x1d_K%ESh\x1fzQ |         z\x128d'0 |  P+|u\x0bQ-X | f7650b00-5cc8-11cb-db82-ebecdb03ffa5
               {\x03],\x04&{r4#\x14 |                                 \x1c- |         B7\x1eyN? | .dap\x1fa\rh | 46f91050-1965-11da-db82-ebecdb03ffa5
                    \x7fpJW*\x1d, a |                   |`]\x07\x13Lna<\x07 |  \x17Q\x01]/*\x10 |  \x0fKYehv(E | eb80fa00-3312-11cf-db82-ebecdb03ffa5
 \x0ed(\x1f`\x1dM\x1etA\x0c7g\x1b"{ | a\nQ{h$"\x0cu\x17\x10g\x12z8l\x03\x08 |        *|y\x05b(( | .dap\x1fa\rh | 980e9060-45a9-11c8-db82-ebecdb03ffa5
     s\x0cqCGM{E^L_\x17\x1eE!\x1c3t |                      VO\rp\x16O\x02Cr |     _\x12y\x0f"92 |  \x0fKYehv(E | 6b3f4190-900c-11d1-db82-ebecdb03ffa5
                            YC\x04^ |                Fhx_n\x7f'"\x0eK\x116= |        \x1b\x14P! |  E}P^k\x7fQE | 4a11ac90-03c2-11d7-db82-ebecdb03ffa5

(10 rows)
cqlsh:ctest01> 

# nodetool flush
# nodetool cfstats ctest01.test03
Keyspace: ctest01
        Read Count: 0
        Read Latency: NaN ms.
        Write Count: 10
        Write Latency: 0.023 ms.
        Pending Flushes: 0
                Table: test03
                SSTable count: 1
 :
途中略
 : 
                Number of keys (estimate): 10
 :
途中略
 : 
# 

( partition key 2column + clustering key 1column, 10 parition =20行 の場合 )

CREATE TABLE ctest01.test04 (
    pkey1 text,
    pkey2 text,
    ckey1 text,
    testdata text,
    uid timeuuid,
    PRIMARY KEY ((pkey1, pkey2), ckey1)
) 

cqlsh:ctest01> select * from test04;

 pkey1                              | pkey2                                 | ckey1             | testdata     | uid
------------------------------------+---------------------------------------+-------------------+--------------+--------------------------------------
                            jf\x01@ |                               hA\x001 |          Xj \x0b$ |  E}P^k\x7fQE | 07567ac0-c90e-11e3-db82-ebecdb03ffa5
                            jf\x01@ |                               hA\x001 | |\\x0eZy\x1e\x1cV |  E}P^k\x7fQE | 203db9a0-60e6-11b9-db82-ebecdb03ffa5
                         \x13\x1cM- |         fKu2BON8JR_`oG\x1aA\x10@\x1cI |         A\x0eAZqK |  \x0fKYehv(E | e2a8ff40-6a46-11e6-db82-ebecdb03ffa5
                         \x13\x1cM- |         fKu2BON8JR_`oG\x1aA\x10@\x1cI |        L"eJ\N\x1e |  P+|u\x0bQ-X | 729f7240-9755-11de-db82-ebecdb03ffa5
        C\x01%~\x1f5\x15p\x14XR\x04 |         ltv*F\x05=k%o\x0fY9ngFx=\x18O |      G`&\t\x1a4XC |  E}P^k\x7fQE | 1f1d7f70-e8e1-11e4-db82-ebecdb03ffa5
        C\x01%~\x1f5\x15p\x14XR\x04 |         ltv*F\x05=k%o\x0fY9ngFx=\x18O |        LD]v^\x12+ |  E}P^k\x7fQE | 79e14370-e10c-11e3-db82-ebecdb03ffa5
                           l\I5\x11 |                                    DD |    \x1c\x02o&\x0f |  \x0fKYehv(E | dff2cbf0-88cf-11cb-db82-ebecdb03ffa5
                           l\I5\x11 |                                    DD |       KAP>sx\x046 | | \nz@Qj\x1c | aacc8400-ba03-11bd-db82-ebecdb03ffa5
                           |Q\x1bGF |   piE\x1cl\x1a<"{\x06\x1d_K%ESh\x1fzQ |             ON\~k | | \nz@Qj\x1c | 5fca5410-5825-11ca-db82-ebecdb03ffa5
                           |Q\x1bGF |   piE\x1cl\x1a<"{\x06\x1d_K%ESh\x1fzQ |         z\x128d'0 |  P+|u\x0bQ-X | f7650b00-5cc8-11cb-db82-ebecdb03ffa5
               {\x03],\x04&{r4#\x14 |                                 \x1c- |   \x125\x05l\x7fF | | \nz@Qj\x1c | 0100e790-2f83-11dc-db82-ebecdb03ffa5
               {\x03],\x04&{r4#\x14 |                                 \x1c- |         B7\x1eyN? | .dap\x1fa\rh | 46f91050-1965-11da-db82-ebecdb03ffa5
                    \x7fpJW*\x1d, a |                   |`]\x07\x13Lna<\x07 |  \x17Q\x01]/*\x10 |  \x0fKYehv(E | eb80fa00-3312-11cf-db82-ebecdb03ffa5
                    \x7fpJW*\x1d, a |                   |`]\x07\x13Lna<\x07 |      J\x0eR\x13)^ |  E}P^k\x7fQE | 44c3def0-b6a8-11cc-db82-ebecdb03ffa5
 \x0ed(\x1f`\x1dM\x1etA\x0c7g\x1b"{ | a\nQ{h$"\x0cu\x17\x10g\x12z8l\x03\x08 |           \x06Qi$ | | \nz@Qj\x1c | faa71360-c83e-11d7-db82-ebecdb03ffa5
 \x0ed(\x1f`\x1dM\x1etA\x0c7g\x1b"{ | a\nQ{h$"\x0cu\x17\x10g\x12z8l\x03\x08 |        *|y\x05b(( | .dap\x1fa\rh | 980e9060-45a9-11c8-db82-ebecdb03ffa5
     s\x0cqCGM{E^L_\x17\x1eE!\x1c3t |                      VO\rp\x16O\x02Cr |         FL\x03+0y | .dap\x1fa\rh | c0962010-e0de-11d0-db82-ebecdb03ffa5
     s\x0cqCGM{E^L_\x17\x1eE!\x1c3t |                      VO\rp\x16O\x02Cr |     _\x12y\x0f"92 |  \x0fKYehv(E | 6b3f4190-900c-11d1-db82-ebecdb03ffa5
                            YC\x04^ |                Fhx_n\x7f'"\x0eK\x116= |        \x1b\x14P! |  E}P^k\x7fQE | 4a11ac90-03c2-11d7-db82-ebecdb03ffa5
                            YC\x04^ |                Fhx_n\x7f'"\x0eK\x116= |     R;Zo\x05\x00U | | \nz@Qj\x1c | 2308b2e0-fbf0-11c1-db82-ebecdb03ffa5

(20 rows)
cqlsh:ctest01> 

# nodetool flush
# nodetool cfstats ctest01.test04
Keyspace: ctest01
        Read Count: 0
        Read Latency: NaN ms.
        Write Count: 10
        Write Latency: 0.009699999999999999 ms.
        Pending Flushes: 0
                Table: test04
                SSTable count: 1
 :
途中略
 : 
                Number of keys (estimate): 10
 :
途中略
 : 
# 

③ Local read count, Local write count

Cassandra起動以降のカウンタ値

経時差分を取得することで、単位時間あたりのread/write回数を確認可能 ( と思う )

このカウンタ値はテーブルごとのものなので、どのcoordinator経由かはわからない。

④ Pending flushes

datastaxの管理者ガイドで、Importantになってるので。( サンプルは、いつかおいおい )

xacknack
お猫様になりたい
https://xacknack.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away