メタデータの末尾にスキップ
メタデータの先頭に移動

このトピックはClustrixシステムデータベースを構成するテーブルについて説明します。

ストレージ テーブル

データベース テーブル

databases テーブルはシステム内の各テーブルについて一つの行が入っています。カラムは以下の通りです:

名前 
説明 
db各データベースのIDを含み、relations テーブルの中の同じカラムに対応します。
userデータベースを作成したユーザのIDを含み、usersテーブルのuser カラムに対応します。
hiddenクエリを実行する場合に、テーブルがユーザから隠されるかどうかを示します。
cscl文字セットに関係する内部値です。

例:

mysql> SELECT * FROM system.databases WHERE name = 'example';
+---------------------+------+--------+--------+------+
| db                  | user | name   | hidden | cscl |
+---------------------+------+--------+--------+------+
| 5831245612393375746 | 4099 | sergei |      0 |  518 |
+---------------------+------+--------+--------+------+
1 row in set (0.01 sec)

Uses: データベースの名前を決定します。IDで渡されます。データベースの作成者を決定します。

リレーショナル テーブル

'relations' テーブルには、システム内の各テーブルについて一つの行が入っています。例:

mysql> SELECT db.name, r.name
FROM system.databases db
JOIN system.relations r 
ON db.db = r.db
WHERE r.name = 'x';
+-----------+------+
| name      | name |
+-----------+------+
| example   | x    |
+-----------+------+
1 row in set (0.00 sec)

リプリゼンテーション テーブル

representations テーブルには、システム内の各テーブルについて一つの行が入っています。各リレーションは一つ以上の基本的なrepresentationを持っています。リレーション上のそれぞれの追加インデックスは、それぞれrepresentationを持っています。baseカラムは、representationが基本のrepresentationまたはインデックスかどうかを示します。

例:

SELECT r.name, rep.name, rep.base
FROM system.relations r
JOIN system.representations rep 
ON r.table = rep.relation
WHERE r.name = 'x';
+------+------------------+------+
| name | name             | base |
+------+------------------+------+
| x    | __idx_x__PRIMARY |    1 |
| x    | b                |    0 |
+------+------------------+------+
2 rows in set (0.03 sec)

Because table x はプライマリキーを持ち、_idx_x_PRIMARY は基本のrepresentationです。

table_slices テーブル

table_slices テーブルには各スライスに関する一つの行が入っています。例:

 mysql> SELECT * FROM system.table_slices WHERE `table` = 'x';
+----------+--------------------------+---------------------+
| Database | Table | Index            | slice               |
+----------+-------+------------------+---------------------+
| example  | x     | __idx_x__PRIMARY | 5483894901051359234 |
| example  | x     | __idx_x__PRIMARY | 5483894901051360258 |
| example  | x     | __idx_x__PRIMARY | 5483894901051361282 |
| example  | x     | __idx_x__PRIMARY | 5483894901051362306 |
| example  | x     | __idx_x__PRIMARY | 5483894901051363330 |
| example  | x     | __idx_x__PRIMARY | 5483894901051363354 |
| example  | x     | b                | 5483894901305310210 |
| example  | x     | b                | 5483894901305311234 |
| example  | x     | b                | 5483894901305312258 |
| example  | x     | b                | 5483894901305313282 |
| example  | x     | b                | 5483894901305314306 |
| example  | x     | b                | 5483894901305315330 |
+----------+-------+------------------+---------------------+
6 rows in set (0.02 sec)

各スライスはテーブルから行のユニークなセットを含んでいます。完全なテーブルはテーブルスライスから全ての行を集めることで構成されます。行のインデックスに基づいたハッシュによって、行はスライスに割り当てられます。テーブルあたりのスライスの数はクラスタのサイズによります。この設定を構成するには、ALTER TABLE SET SLICES = <N> コマンドを発行します。スライスの数を変更すると、パフォーマンスが改善するかも知れません。詳細については、Clustrixテクニカルサポートに連絡を取ってください。

Uses: 各テーブルの中に、大量のスライスとインデックスがあります。

Icon

各スライスについて、データベース、テーブル、およびインデックスの名前を表示するには、slice カラムをjoinします。

table_replicas テーブル

table_replicas テーブルはシステム内の各レプリカについて一つの行が入っており、各レプリカのサイズとノードを記録しています。各スライスには二つ以上のレプリカが入っており、それらのレプリカは別のノードにあります。スライスの各レプリカには同じ行が入っています。

例:

mysql> SELECT database, `table`, `index`, nodeid, size
FROM system.table_replicas WHERE `table` = 'x';
+-----------+-------+------------------+--------+---------+
| database  | table | index            | nodeid | size    |
+-----------+-------+------------------+--------+---------+
| example   | x     | __idx_x__PRIMARY |      2 |   32768 |
| example   | x     | __idx_x__PRIMARY |      3 |   32768 |
| example   | x     | __idx_x__PRIMARY |      3 |   32768 |
| example   | x     | __idx_x__PRIMARY |      1 |   32768 |
| example   | x     | __idx_x__PRIMARY |      1 |   32768 |
| example   | x     | __idx_x__PRIMARY |      2 |   32768 |
| example   | x     | b                |      2 |   32768 |
| example   | x     | b                |      3 |   32768 |
| example   | x     | b                |      3 |   32768 |
| example   | x     | b                |      1 |   32768 |
| example   | x     | b                |      1 |   32768 |
| example   | x     | b                |      2 |   32768 |
+-----------+-------+------------------+--------+---------+
12 rows in set (0.05 sec)

Uses: 集合関数に使うインデックスのサイズを決定します。適切に分散されたインデックスを調べます。

table_sizes Table

table_sizes テーブルは各テーブルの総サイズをバイトで記録します。それには、基本のrepresentationとその全てのインデックスが含まれます。

mysql> SELECT * FROM system.table_sizes WHERE `table` = 'x';
+-----------+-------+---------+
| Database  | Table | Size    |
+-----------+-------+---------+
| example   | x     |  196608 |
+-----------+-------+---------+
1 rows in set (0.03 sec)

名前でテーブルを探す

以下のクエリは、runs テーブルに含まれる全てのデータベースをリスト表示します。
mysql> SELECT database, 'table' FROM system.table_sizesWHERE 'table' = 'runs';

mysql> SELECT database, `table` FROM system.table_sizes WHERE `table` = 'runs';
+-----------+-------+
| database  | table |
+-----------+-------+
| longstats | runs  |
| perfstats | runs  |
| slotstat  | runs  |
+-----------+-------+
3 rows in set (0.44 sec)

テーブル名でインデックスのサイズを調べる

以下のクエリは、テーブル x の各インデックスによって消費される総容量をリスト表示します。

mysql> SELECT database, `table`, `index`,
sum(size) AS size
FROM system.table_replicas
WHERE `table` = 'x' 
GROUP BY `index`
ORDER BY database, `table`;
+----------+-------+------------------+--------+
| database | table | index            | size   |
+----------+-------+------------------+--------+
| example  | x     | b                | 196608 |
| example  | x     | __idx_x__PRIMARY | 196608 |
+----------+-------+------------------+--------+
2 row in set (0.03 sec)

テーブル名でスライスとサイズを調べる

以下のクエリは x テーブルに緘するスライスのIDとサイズをリスト表示します:

mysql> SELECT database, `table`, `index`, slice, nodeid, size
FROM system.table_replicas
WHERE `table` = 'x'
ORDER BY slice;
+-----------+-------+------------------+---------------------+--------+---------+
| database  | table | index            | slice               | nodeid | size    |
+-----------+-------+------------------+---------------------+--------+---------+
| example   | x     | __idx_x__PRIMARY | 5833437499082161154 |      1 |   32768 |
| example   | x     | __idx_x__PRIMARY | 5833437499082161154 |      2 |   32768 |
| example   | x     | __idx_x__PRIMARY | 5833437499082162178 |      3 |   32768 |
| example   | x     | __idx_x__PRIMARY | 5833437499082162178 |      1 |   32768 |
| example   | x     | __idx_x__PRIMARY | 5833437499082163202 |      3 |   32768 |
| example   | x     | __idx_x__PRIMARY | 5833437499082163202 |      2 |   32768 |
| example   | x     | b                | 5833437499082161154 |      2 |   32768 |
| example   | x     | b                | 5833437499082161154 |      1 |   32768 |
| example   | x     | b                | 5833437499082162178 |      2 |   32768 |
| example   | x     | b                | 5833437499082162178 |      1 |   32768 |
| example   | x     | b                | 5833437499082163202 |      2 |   32768 |
| example   | x     | b                | 5833437499082163202 |      1 |   32768 |
+-----------+-------+------------------+---------------------+--------+---------+
12 rows in set (0.03 sec)

ユーザとセッション テーブル

ユーザ テーブル

データベースユーザ、ホスト、パスワードの組み合わせがusers テーブルに格納されます。ユーザアカウントを変更するには、INSERTおよびUPDATEクエリを発行します。数字のユーザIDを読みやすいユーザ名に解決するには、関係するテーブルにjoinしてください
mysql> SELECT * FROM system.users;

SELECT * FROM system.users;
+------+-------------+-----------+-------------------------------------------+
| user | username    | host      | password                                  |
+------+-------------+-----------+-------------------------------------------+
| 4099 | root        | %         |                                           |
| 4100 | mysql_slave |           |                                           |
| 4101 | clustrix_ui | 127.0.0.1 | *46A23F3EF4B5568CD0D6951239A0345A78DDF61A |
| 4106 | dbcron      | 127.0.0.1 |                                           |
| 4109 | clx_support | 127.0.0.1 |                                           |
| 4110 | clx_maint   | 127.0.0.1 | *845EE408D4B27C5C5A9751D7786FDA7E89B2C02E |
+------+-------------+-----------+-------------------------------------------+
6 rows in set (0.00 sec)
Icon

結果には、3つのデフォルトのユーザに加えて、手動で追加された3つのユーザが含まれています。

セッション テーブル

'sessions' テーブルには、現在接続しているクライアントセッションおよび最近切断されたクライアントセッションの情報が入っています。

mysql> SELECT * FROM system.sessions WHERE session_id=442446849\G
*************************** 1. row ***************************
         nodeid: 1
     session_id: 442446849
      source_ip: NULL
    source_port: NULL
       local_ip: NULL
     local_port: NULL
           user: 4099
       database: ai
      trx_state: closed
statement_state: finished
            xid: NULL
      isolation: REPEATABLE-READ
 last_statement: SELECT `Database`, `Table`, `Index`, nodeid, size
FROM system.table_replicas WHERE `Table` = 'x'
  time_in_state: 3591
        created: 2013-01-14 22:19:18
1 row in set (0.00 sec) 

ログインしているユーザに関する情報を表示するには、以下のクエリを発行します:

mysql> SELECT u.username AS username , s.source_ip AS source_ip,s.database AS database, s.created AS login_time
FROM system.users u JOIN system.sessions s ON s.user = u.user;
+----------+------------+----------------+---------------------+
| username | source_ip  | database       | login_time          |
+----------+------------+----------------+---------------------+
| root     | 10.10.2.1  | example        | 2013-01-14 22:26:03 |
+----------+------------+----------------+---------------------+
1 rows in set (0.01 sec)

リプリケーションテーブル

mysql_master_status テーブル

このテーブルは、現在クラスタに接続している各リプリケーションスレーブに関する情報が格納されています。

mysql> SELECT * FROM mysql_master_status\G
*************************** 1. row ***************************
                nodeid: 1
        master_logname: example_binlog.003415
         master_logpos: 73786583
      master_commit_id: 5833449952871684102
          master_trxid: NULL
              slave_id: 2101898466
            session_id: 21505
                  uuid: 1025
               batches: 251264
          transactions: 281192
                events: 85006519
                 bytes: 5888884482
   replication_batches: 231173
   replication_commits: 301450
replication_statements: 153354790
             total_sec: 75760.860936834
       replication_sec: 75087.242316922
      read_commits_sec: 233.49768966669
   read_statements_sec: 1540.1093953042
1 row in set (0.00 sec)


クラスタからリプリケートしているスレーブに関する詳細な情報を表示するには、以下のクエリを発行します:

mysql> SELECT source_ip, source_port, username, m.* 
FROM system.mysql_master_status m 
JOIN system.sessions s ON s.session_id = m.session_id 
JOIN system.users u ON s.user = u.user\G
*************************** 1. row ***************************
             source_ip: 10.10.1.2
           source_port: 33124
              username: root
                nodeid: 1
        master_logname: example_binlog.003415
         master_logpos: 81323170
      master_commit_id: 5833449952871684102
          master_trxid: NULL
              slave_id: 2101898466
            session_id: 21505
                  uuid: 1025
               batches: 251418
          transactions: 281528
                events: 85166851
                 bytes: 5896421069
   replication_batches: 231462
   replication_commits: 301793
replication_statements: 153663235
             total_sec: 75856.705437258
       replication_sec: 75182.070925435
      read_commits_sec: 233.77238258324
   read_statements_sec: 1542.8020333522
1 row in set (0.01 sec)

統計テーブル

stats テーブル

このテーブルには、データベースとクラスタのパフォーマンスに関する内部的に集められた統計が入っています。その統計のほとんどは内部的な利用のためのものですが、いくつかは一般的に興味深いものです:

例: 各ノードに関して、総トランザクションをリスト表示します:

mysql> SELECT * FROM stats WHERE name LIKE "tps_%" ORDER BY name, nodeid;
+--------+-----------+--------+------+
| nodeid | name      | value  | rate |
+--------+-----------+--------+------+
|      1 | tps_total |  29536 |    0 |
|      2 | tps_total |  38135 |    0 |
|      3 | tps_total | 650507 |    0 |
+--------+-----------+--------+------+
3 rows in set (0.00 sec)


各ノードに関して、クエリの数をリスト表示します:

mysql> SELECT * FROM stats WHERE name = "qps_total" ORDER BY nodeid;
+--------+-----------+----------+------+
| nodeid | name      | value    | rate |
+--------+-----------+----------+------+
|      1 | qps_total |  2782161 |  3.4 |
|      2 | qps_total | 90187934 |  9.2 |
|      3 | qps_total |  8704627 |  9.8 |
+--------+-----------+----------+------+
3 rows in set (0.00 sec) 
rate カラムは変更率の10秒間の移動平均です。

cluster_session_stats テーブル

cluster_session_stats テーブルには、トランザクションとステートメントの種類に関する、セッションあたりの統計が入っています。
例:

mysql> SELECT name, value 
FROM system.cluster_session_stats 
GROUP BY name;
+----------------------------+-------+
| name                       | value |
+----------------------------+-------+
| transactions_corked        |     0 |
| Com_create_user            |     0 |
| Com_show_procedure_status  |     0 |
| qrc_hits                   |     0 |
| Com_delete_us              |     0 |
| transactions_errored       |     0 |
| Com_show_keys              |     0 |
| Com_show_collations        |     0 |
| Com_change_db              |     1 |
| Com_show_binlog_segments   |     0 |
| tm_forwards                |    10 |
...

リバランス テーブル

rebalancer_summary テーブル

クラスタはバックグラウンドモードで最適化のタスクを継続して実施します。稀な場合ですが、このバックグランドの動作はクエリのパフォーマンスに影響するかも知れません。そのような場合は、均等な分散を確実にするためにデータをディスクとノードの間で移動するリバランサが原因のことがほとんどです。リバランスは、概してインポートの後で実行され、ディスクの利用増加に伴って実行されることもあります。リバランサーが実行されると、このテーブルへのクエリは現在の動作に関する詳細を返すでしょう。しかし、リバランサーのセッションは短いため、 詳細な情報に関してはrebalancer_activity_log テーブルがより良い情報源になります。

action カラムに返される値は以下の通りです:

Action
説明
splitスライスがあまりに大きくなったため、二つの小さなスライスに分割されています。
move負荷の最適化をするために、スライスが他のディスクまたはノードに移動されています。
copyスライスはデュプリケートされています。ハードウェア障害の後の再プロテクトステージで良くあることです。

rebalancer_activity_log テーブル

リバランサーの動作と理由の詳細なログです。クエリの例:

mysql> SELECT * FROM system.rebalancer_activity_log 
WHERE op <> 'rerank' 
ORDER BY started DESC LIMIT 10;
+---------------------+--------------+-----------------------------+----------------+---------------------------------+----------------------------------------+-----------+---------------------+---------------------+-------+
| id                  | op           | reason                      | database       | relation                        | representation                         | bytes     | started             | finished            | error |
+---------------------+--------------+-----------------------------+----------------+---------------------------------+----------------------------------------+-----------+---------------------+---------------------+-------+
| 5833369381388754947 | redistribute | slice size imbalance        | _replication   | alpo_286_replication_statements | _alpo_286_replication_statements_ind_0 | 231931904 | 2013-01-14 18:12:27 | 2013-01-14 18:12:30 | NULL  |
| 5833200588853349379 | slice split  | slice too big               | run_resources  | statd_history                   | __idx_statd_history__PRIMARY           | 658866176 | 2013-01-14 07:17:27 | 2013-01-14 07:18:05 | NULL  |
| 5833160645266934787 | slice split  | slice too big               | run_resources  | statd_history                   | run_id                                 | 579764224 | 2013-01-14 04:42:27 | 2013-01-14 04:43:15 | NULL  |
| 5833092355270563843 | redistribute | slice size imbalance        | _replication   | alpo_285_replication_statements | _alpo_285_replication_statements_ind_0 | 257359872 | 2013-01-14 00:17:27 | 2013-01-14 00:17:30 | NULL  |
| 5833056277466099715 | slice split  | slice too big               | run_resources  | statd_history                   | __idx_statd_history__PRIMARY           | 658898944 | 2013-01-13 21:57:27 | 2013-01-13 21:58:15 | NULL  |
| 5832875888808090627 | redistribute | slice size imbalance        | _replication   | alpo_284_replication_statements | _alpo_284_replication_statements_ind_0 | 257556480 | 2013-01-13 10:17:27 | 2013-01-13 10:17:30 | NULL  |
| 5832743174159195139 | slice split  | slice too big               | run_resources  | statd_history                   | __idx_statd_history__PRIMARY           | 658964480 | 2013-01-13 01:42:27 | 2013-01-13 01:43:18 | NULL  |
| 5832618190540363777 | slice split  | slice too big               | run_resources  | statd_history                   | run_id                                 | 579272704 | 2013-01-12 17:37:27 | 2013-01-12 17:38:11 | NULL  |
| 5832601440161527811 | redistribute | slice size imbalance        | _replication   | alpo_283_replication_statements | _alpo_283_replication_statements_ind_0 | 237699072 | 2013-01-12 16:32:27 | 2013-01-12 16:32:30 | NULL  |
| 5832358273816747009 | move         | distribution load imbalance | clustrix_statd | qpc_history                     | __idx_qpc_history__PRIMARY             |  36470784 | 2013-01-12 00:48:50 | 2013-01-12 00:48:56 | NULL  |
+---------------------+--------------+-----------------------------+----------------+---------------------------------+----------------------------------------+-----------+---------------------+---------------------+-------+
10 rows in set (0.02 sec)
  • ラベルなし
TOP
inserted by FC2 system