すべてのプロダクト
Search
ドキュメントセンター

Lindorm:テーブルの行数のカウント

最終更新日:Aug 28, 2026

LindormTable は、Log-Structured Merge-Tree (LSM-Tree) ストレージ構造を使用しています。正確な行数を取得するには全表スキャンが必要であり、テーブルが大きくなるほど操作にかかる時間が長くなります。COUNT 操作を頻繁に実行することは避けてください。

Lindorm

Lindorm ワイドテーブルの正確な行数と推定行数の違いは次のとおりです。

正確な行数

推定行数

統計メソッド

テーブル全体をスキャンして、正確な行数を取得します。

ファイルレベルでメタデータを直接取得するため、結果が実際のテーブルサイズと異なる場合があります。

統計パフォーマンス

完了までに時間がかかり、同時に実行されると追加の負荷が高くなります。

完了までの時間が短く、同時に実行される際の追加の負荷は低いです。

適用シナリオ

データ移行前後のデータ検証などのシナリオ。

アプリケーションページでテーブルサイズの変更傾向を表示するシナリオ。

ワイドテーブルの正確な行数を取得する方法

次の方法を使用して、ワイドテーブルの正確な行数を取得できます。ビジネスシナリオに基づいて方法を選択することを推奨します。

説明

Lindorm SQL を使用した行数のカウントは、一般的に HBase RowCounter を使用するよりも高速です。これは、Lindorm が COUNT 操作を自動的に分散して並列 (マルチスレッド実行) で処理するのに対し、HBase シェルはシングルスレッドでカウントするためです。ただし、COUNT は依然として全表スキャンが必要であり、デフォルトのタイムアウトは 120 秒です。タイムアウトすると、操作はエラーを報告します。大規模なテーブルの場合は、SQL の HINT を使用してタイムアウトを延長できます。Lindorm SQL の処理速度は、ノードあたり毎秒数十万行に達することがあります。COUNT は CPU 負荷の高い操作であるため、ビジネスのピーク時間帯には実行しないでください。

SQL を使用したワイドテーブルの正確な行数の取得

Lindorm-cli、MySQL クライアントを使用した LindormTable への接続と使用、または JDBC を使用して Lindorm に接続し、SQL ステートメントを実行できます。

たとえば、次の SQL ステートメントを実行して、table_name の行数をカウントし、実行タイムアウトを 5 分に設定できます。

SELECT  /*+  _l_operation_timeout_(300000) */ COUNT(*) FROM table_name;

結果は次のようになります。

+--------+
| EXPR$0 |
+--------+
| 160000 |
+--------+
重要

テーブルの正確な行数をカウントするには、全表スキャンが必要です。この操作は注意して実行してください。データ量が 100 万行を超える場合は、次の方法を推奨します。

  1. 検索インデックスを使用して高速化する: 詳細については、「検索インデックスを使用したワイドテーブルのデータクエリ」をご参照ください。

    1843_v1_4_0.xdita">.

  2. _l_operation_timeout HINT を追加してステートメントのタイムアウトを延長する: 詳細については、「HINT」をご参照ください。

    HBase Shell を使用したワイドテーブルの

    HBase Shell を使用して LindormTable に接続します。詳細については、「Lindorm Shell を使用して LindormTable にアクセスする」をご参照ください。

    COUNT コマンドの使用 (推奨)

    HBase シェルで COUNT コマンドを使用すると、HBase テーブルの正確な行数を取得できます。このコマンドの仕組みは、テーブルのすべてのデータをバッチでスキャンしてカウントすることです。そのため、同じ VPC 内の ECS クライアントから COUNT コマンドを実行することを推奨します。インターネット経由で COUNT コマンドを実行すると、ネットワーク使用率が高くなり、統計効率が低下します。テーブルの構造によって、スキャン速度は異なります。COUNT コマンドのフルテーブルスキャンの速度は、100,000 行/秒 未満になる場合があります。次の文を実行して、テーブルの総行数をカウントします:

    count 'table_name'

    結果は次のようになります: Statistics result

    HBase RowCounter プラグインを使用した高速化

    HBase シェルの count コマンドを使用すると、ワイドテーブルの正確な行数を取得できますが、大規模なテーブルでは速度が遅くなります。RowCounter プラグインは、ローカルの擬似分散 MR タスクを起動して COUNT 操作を実行します。デフォルトでは、プラグインはシングルスレッドで実行され、統計速度は HBase シェルの COUNT コマンドとほぼ同じです。統計速度を向上させるには、mapreduce.local.map.tasks.maximum を指定してスレッド数を増やすことができます。複数のスレッドで並行実行することで、統計が大幅に高速化されます。

    • スレッド数は、テーブルのリージョン数以下である必要があります。

      テーブル内のリージョンの数以下となります。テーブル内のリージョンの数以下となります。

    • スレッド数を増やすと、クラスターのロードが高くなり、オンラインサービスに影響を与える可能性があります。ビジネス要件に基づいて数を設定してください。

      スレッド数を増やすと、クラスターの負荷が高くなり、オンラインサービスに影響を与える可能性があります。ビジネス要件に基づいて数値を設定してください。

    たとえば、HBase Shell で RowCounter プラグインを使用して Lindorm ワイドテーブルの行数をカウントするには、次のコマンドを実行します。

    Lindorm ワイドテーブルの行をカウントするには、HBase Shell で次のコマンドを実行します。

    • RowCounter プラグインを使用して、対象テーブルの総行数をカウントします。

      対象テーブル (table) の合計行数

    ./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter  "table_name"
    • RowCounter プラグインを使用して、16 の並行スレッドでテーブル (table) の総行数をカウントします。

      RowCounter プラグインを使用して、16 の並行スレッドでテーブル (table) の総行数をカウントします。

    ./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter -Dmapreduce.local.map.tasks.maximum=16 "table_name"
    • RowCounter プラグインを使用して、名前空間 ns 内の対象テーブル (table) の合計行数をカウントします。

      RowCounter プラグインを使用して、名前空間 ns 内の対象テーブル (table) の総行数をカウントします。

    ./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter  "ns:table_name"

    RowCounter プラグインの統計結果は、次の図に示すように、Log ディレクトリの hbase.log ファイルに保存されます。image

ワイドテーブルの推定行数を取得する方法

次の方法を使用して、ワイドテーブルの推定行数を取得できます。

SQL を使用したワイドテーブルの推定行数の取得

SELECT ステートメントを使用して正確な行数を取得するのとは異なり、推定行数の取得には次の SHOW ステートメントを使用します。

重要

この機能には、LindormTable バージョン 2.8.2.6 以降および Lindorm SQL バージョン 2.8.2.6 以降が必要です。

SHOW ESTIMATED ROWS FROM table_name;

次の結果が返されます。

+---------------------+
| ESTIMATED_ROW_COUNT |
+---------------------+
| 15000               |
+---------------------+

クラスター管理システムでのテーブルの推定行数の表示

まず、クラスター管理システムにログインします。

Lindorm クラスター管理システムでは、概要ページでテーブルのおおよその行数を表示できます。この推定値は、データファイルの行数メタデータを合計して計算されます。ユーザーが更新または削除操作を実行すると、同じ行のデータが複数のファイルに分散される可能性があります。さらに、ファイルの行数メタデータはファイルが生成されるときに収集されます。ユーザーが TTL 機能を使用している場合、ファイル内の一部のデータが期限切れになっている可能性があり、これにより推定行数が実際の行数と異なる場合があります。

Lindorm クラスター管理システムで、左側のナビゲーションウィンドウで [概要] をクリックします。[現在の IDC] エリアで、ターゲットテーブルを見つけます。行数は [行] 列に表示されます。

説明

テーブルにデータがあるにもかかわらず推定行数が 0 の場合、Lindorm ワイドテーブルエンジンのマイナーバージョンが低すぎます。マイナーバージョンをアップグレードしてください。アップグレード方法の詳細については、「Lindorm インスタンスのマイナーエンジンバージョンのアップグレード」をご参照ください。