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になってるので。( サンプルは、いつかおいおい )