Tous les produits
Search
Centre de documentation

Lindorm:Compter le nombre de lignes d'une table

Dernière mise à jour :Aug 27, 2026

LindormTable utilise une structure de stockage Log-Structured Merge-Tree (LSM-Tree). Obtenir un nombre exact de lignes nécessite une analyse complète de la table : plus la table est volumineuse, plus l'opération est longue. Évitez d'exécuter fréquemment des opérations COUNT.

Lindorm

Les différences entre le nombre exact de lignes et le nombre estimé de lignes d'une table large Lindorm sont les suivantes :

Nombre exact de lignes

Nombre estimé de lignes

Méthode de calcul

Analyse l'intégralité de la table pour obtenir le nombre précis de lignes.

Récupère directement les métadonnées au niveau des fichiers ; le résultat peut donc différer de la taille réelle de la table.

Performances du calcul

Durée d'exécution longue, avec une charge supplémentaire élevée en cas d'exécution simultanée.

Durée d'exécution courte, avec une faible charge supplémentaire en cas d'exécution simultanée.

Scénarios applicables

Scénarios tels que la vérification des données avant et après une migration.

Scénarios où la page de l'application affiche la tendance d'évolution de la taille de la table.

Méthodes pour obtenir le nombre exact de lignes d'une table large

Utilisez les méthodes suivantes pour obtenir le nombre exact de lignes d'une table large. Choisissez une méthode adaptée à votre scénario métier :

Remarque

L'utilisation de Lindorm SQL pour compter les lignes est généralement plus rapide que celle de HBase RowCounter, car Lindorm distribue et traite automatiquement l'opération COUNT en parallèle (exécution multithread), tandis que HBase Shell effectue le comptage sur un seul thread. Toutefois, COUNT doit toujours analyser l'intégralité de la table et le délai d'expiration par défaut est de 120 secondes. L'opération signale une erreur en cas de dépassement de ce délai. Pour les tables volumineuses, augmentez le délai d'expiration à l'aide de l'indice HINT dans SQL. Les vitesses de traitement de Lindorm SQL peuvent atteindre plusieurs centaines de milliers de lignes par nœud et par seconde. Étant donné que COUNT est gourmand en CPU, ne l'exécutez pas pendant les heures de pointe de votre activité.

Obtenir le nombre exact de lignes d'une table large à l'aide de SQL

Utilisez Lindorm-cli, Utiliser un client MySQL pour se connecter à LindormTable et l'utiliser ou JDBC pour vous connecter à Lindorm et exécuter des instructions SQL.

Par exemple, exécutez l'instruction SQL suivante pour compter les lignes de table_name et définir le délai d'exécution à 5 minutes.

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

Le résultat est le suivant :

+--------+
| EXPR$0 |
+--------+
| 160000 |
+--------+
Important

Le comptage exact des lignes d'une table nécessite une analyse complète de celle-ci. Effectuez cette opération avec prudence. Si le volume de données dépasse un million de lignes, nous vous recommandons de :

  1. Utiliser des index de recherche pour accélérer le processus : Interroger des données dans une table large à l'aide d'un index de recherche.

    1843_v1_4_0.xdita">.

  2. Ajouter l'HINT _l_operation_timeout pour augmenter le délai d'expiration de l'instruction : *HINT.

    d'une table large à l'aide de HBase Shell

    Connectez-vous à LindormTable à l'aide de HBase Shell. Pour plus d'informations, consultez Accéder à LindormTable à l'aide de Lindorm Shell.

    Utiliser la commande COUNT (Recommandé)

    La commande COUNT dans HBase Shell permet d'obtenir le nombre exact de lignes d'une table HBase. Le principe consiste à analyser toutes les données de la table par lots et à les compter. Par conséquent, nous vous recommandons d'exécuter la commande COUNT depuis un client ECS situé dans le même VPC. Si vous exécutez la commande COUNT via Internet, l'utilisation du réseau est élevée, ce qui réduit l'efficacité du calcul. Selon la structure de la table, la vitesse d'analyse varie. La vitesse d'analyse complète de la table avec la commande COUNT peut être inférieure à 100 000 lignes par seconde. Exécutez l'instruction suivante pour compter le total des lignes de la table :

    count 'table_name'

    Le résultat est le suivant : Statistics result

    Utiliser le plug-in HBase RowCounter pour accélérer le processus

    La commande count dans HBase Shell permet d'obtenir le nombre exact de lignes d'une table large, mais la vitesse est lente pour les tables volumineuses. Le plug-in RowCounter démarre une tâche MR pseudo-distribuée locale pour effectuer l'opération COUNT. Par défaut, le plug-in s'exécute sur un seul thread et la vitesse de calcul est similaire à celle de la commande COUNT de HBase Shell. Pour améliorer la vitesse de calcul, spécifiez mapreduce.local.map.tasks.maximum afin d'augmenter le nombre de threads. L'exécution parallèle avec plusieurs threads accélère considérablement les statistiques.

    • Le nombre de threads doit être inférieur ou égal au nombre de régions de la table.

      être inférieur ou égal au nombre de régions de la table.être inférieur ou égal au nombre de régions de la table.

    • L'augmentation du nombre de threads peut entraîner une charge élevée du cluster et affecter les services en ligne. Définissez le nombre en fonction des besoins métier.

      provoquer une charge élevée du cluster et affecter les services en ligne. Définissez le nombre en fonction des besoins métier.

    Par exemple, exécutez les commandes suivantes dans HBase Shell pour utiliser le plug-in RowCounter afin de compter les lignes d'une table large Lindorm.

    Exécutez les commandes suivantes dans HBase Shell pour compter les lignes d'une table large Lindorm.

    • Utilisez le plug-in RowCounter pour compter le total des lignes de la table cible (table).

      le total des lignes de la table cible (table).

    ./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter  "table_name"
    • Utilisez le plug-in RowCounter pour compter le total des lignes de la table (table) avec 16 threads simultanés.

      lignes totales de la table (table) avec 16 threads simultanés.

    ./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter -Dmapreduce.local.map.tasks.maximum=16 "table_name"
    • Utilisez le plug-in RowCounter pour compter le total des lignes de la table cible (table) dans le namespace ns.

      lignes de la table cible (table) dans le namespace ns.

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

    Le résultat statistique du plug-in RowCounter est enregistré dans le fichier hbase.log du répertoire Log, comme illustré dans la figure suivante. image

Méthodes pour obtenir le nombre estimé de lignes d'une table large

Utilisez les méthodes suivantes pour obtenir le nombre estimé de lignes d'une table large :

Obtenir le nombre estimé de lignes d'une table large à l'aide de SQL

Contrairement à l'utilisation de l'instruction SELECT pour obtenir le nombre exact de lignes, l'obtention du nombre estimé de lignes utilise l'instruction SHOW suivante :

Important

Cette fonctionnalité nécessite LindormTable version 2.8.2.6 ou ultérieure et Lindorm SQL version 2.8.2.6 ou ultérieure.

SHOW ESTIMATED ROWS FROM table_name;

Le résultat suivant est renvoyé :

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

Afficher le nombre estimé de lignes d'une table dans le système de gestion de cluster

Tout d'abord, Connectez-vous au système de gestion de cluster.

Dans le système de gestion de cluster Lindorm, vous pouvez afficher un nombre approximatif de lignes d'une table sur la page Overview. Cette valeur estimée est calculée en additionnant les métadonnées du nombre de lignes des fichiers de données. Si l'utilisateur effectue des opérations de mise à jour ou de suppression, la même ligne de données peut être distribuée parmi plusieurs fichiers. De plus, les métadonnées du nombre de lignes d'un fichier sont collectées lors de la génération de celui-ci. Si l'utilisateur utilise la fonctionnalité TTL, certaines données du fichier peuvent avoir expiré, ce qui peut entraîner une différence entre le nombre estimé de lignes et le nombre réel.

Dans le système de gestion de cluster Lindorm, cliquez sur Overview dans le volet de navigation de gauche. Dans la zone Current IDC, recherchez la table cible. Le nombre de lignes est affiché dans la colonne Rows.

Remarque

Si la table contient des données mais que le nombre estimé de lignes est de 0, la version mineure du moteur de table large Lindorm est trop ancienne. Mettez à jour la version mineure. Pour savoir comment effectuer la mise à niveau, consultez Mettre à niveau la version mineure du moteur d'une instance Lindorm.