Analyser les modèles d'accès
Vous pouvez analyser visuellement la façon dont vos applications lisent et écrivent des données dans Bigtable à l'aide de la page Modèles d'accès de Google Cloud console, ou appeler l'API Cloud Monitoring de manière automatisée pour interroger les métriques de modèle d'accès sous-jacentes.
Avant de lire ce document, consultez les pages Lectures, Écritures et Surveillance.
Présentation
Bigtable classe automatiquement les requêtes de données entrantes en types de requêtes dans Cloud Monitoring. Le modèle d'accès de votre charge de travail est la combinaison de différents types de requêtes. Par exemple, votre modèle d'accès à la charge de travail peut se composer de types de requêtes de lecture ponctuelle, d'analyse courte et d'écriture ponctuelle. Bigtable définit 10 types de requêtes distincts.
La page Insights système affiche l'utilisation globale des ressources, et Key Visualizer montre comment Bigtable répartit le trafic entre les plages de clés de ligne. La page Modèles d'accès fournit une répartition de votre charge de travail axée sur les requêtes au niveau du cluster, de la table et du profil d'application. Vous pouvez utiliser la page Modèles d'accès pour effectuer les tâches suivantes :
- Comprendre votre charge de travail : affichez la proportion et le taux de types de requêtes de lecture, d'écriture et de lecture/écriture pour chaque cluster, et regroupez les métriques par table ou par profil d'application.
- Détecter les schémas de requête inefficaces et résoudre les problèmes de latence :
- Identifiez les lectures creuses où Bigtable analyse beaucoup plus de lignes ou de cellules qu'il n'en renvoie en raison de filtres sélectifs ou de cellules non collectées en attente de récupération de mémoire.
- Surveiller les analyses inverses, qui sont moins efficaces que les analyses directes
- Comparez les centiles de latence côté serveur avec les lignes analysées, les lignes renvoyées et les cellules vues pour identifier les modèles d'accès qui contribuent aux pics de latence.
- Identifier les charges de travail pour l'adoption des fonctionnalités :
- Identifiez les tables ou les profils d'application présentant des volumes élevés de lectures ponctuelles qui peuvent bénéficier du niveau en mémoire dans l'édition Enterprise Plus.
- Identifiez les charges de travail d'analyse ou de lecture par lot volumineuses que vous pouvez isoler du trafic de diffusion à l'aide de l'informatique sans serveur Data Boost.
Limites
Bigtable ne classe pas les requêtes GoogleSQL pour Bigtable en tant que modèles d'accès et n'inclut pas ces requêtes dans les métriques de modèle d'accès aux lignes, aux cellules ou aux octets. Dans les graphiques Distribution des RPS, RPS et Latence, les requêtes SQL et les autres requêtes non classées s'affichent sous la forme QUERY_TYPE_UNKNOWN.
Rôles requis
Pour obtenir les autorisations nécessaires pour afficher la page Modèles d'accès dans la console Google Cloud , demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :
-
Afficher les ressources Bigtable :
- Lecteur Bigtable (
roles/bigtable.viewer) - Lecteur Bigtable (
roles/bigtable.reader)
- Lecteur Bigtable (
-
Afficher les données de séries temporelles Monitoring : Lecteur Monitoring (
roles/monitoring.viewer)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Ces rôles prédéfinis contiennent les autorisations requises pour afficher la page Modèles d'accès dans la console Google Cloud . Pour connaître les autorisations exactes requises, développez la section Autorisations requises :
Autorisations requises
Les autorisations suivantes sont requises pour afficher la page Modèles d'accès dans la console Google Cloud :
-
Affichez les détails de l'instance :
bigtable.instances.get -
Répertoriez les clusters, les profils d'application et les tables :
bigtable.clusters.list, bigtable.appProfiles.list, bigtable.tables.list -
Métriques de surveillance des requêtes :
monitoring.timeSeries.list
Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.
Modèles d'accès
Lorsque votre application utilise une bibliothèque cliente Bigtable, celle-ci traduit vos appels de méthode en requêtes API Bigtable Data :
- Lectures : toutes les méthodes de lecture de la bibliothèque cliente, y compris les lectures d'une seule ligne telles que
readRow, les lectures de plusieurs lignes telles quereadRowsoubulkReadRowsavec plusieurs clés de ligne, et les analyses de plage ou de préfixe de ligne telles quereadRowsavec une plage ou un préfixe, envoient une requête d'API de donnéesReadRows. - Écritures : les méthodes d'écriture de la bibliothèque cliente envoient une requête
MutateRowpour les écritures simples et les mises à jour incrémentielles, une requêteMutateRowspour les écritures par lot, une requêteCheckAndMutateRowpour les écritures conditionnelles ou une requêteReadModifyWriteRowpour les ajouts et incréments.
Bigtable classe chaque requête d'API de données entrante sur le serveur une fois qu'elle est terminée, en fonction des facteurs suivants plutôt que du seul nom de la méthode de la bibliothèque cliente :
- Paramètres de requête : indique si la requête cible une seule clé de ligne, plusieurs clés de ligne ou une plage de lignes, si la requête définit
reversedet quels filtres elle applique. - Statistiques d'exécution : nombre de lignes et de cellules analysées et renvoyées, et charge utile en octets
Par exemple, lorsque vous appelez une méthode de lecture d'une seule ligne telle que readRow ou que vous appelez readRows avec une seule clé de ligne, Bigtable classe généralement la requête comme une lecture ponctuelle, qui est éligible au niveau en mémoire. Toutefois, si cette lecture d'une seule ligne utilise un filtre complexe ou analyse un grand nombre de cellules, Bigtable peut la classer comme une lecture éparse, une lecture groupée ou une autre lecture. À l'inverse, si vous appelez readRows pour lire plusieurs clés de ligne ou analyser une plage de lignes, Bigtable classe la requête comme une lecture ou une analyse groupée, qui n'est pas éligible au niveau en mémoire.
Ordre d'évaluation des lectures
Étant donné qu'une seule requête d'API de données ReadRows peut correspondre aux caractéristiques de plusieurs catégories, Bigtable évalue les requêtes de lecture dans l'ordre suivant et attribue le premier modèle d'accès correspondant :
- Lecture par point
- Analyse courte (pour les analyses vers l'avant) ou analyse courte inversée (lorsque
reversedest défini surtrue) - Analyse inversée (pour toute requête de lecture restante où
reversedest défini surtrue) - Lecture fragmentée (évaluée avant la lecture groupée afin que Bigtable signale les lectures de plusieurs clés ou les analyses avant plus importantes avec une élimination de filtre importante comme fragmentées)
- Lecture groupée
- Autre lecture (pour toute requête
ReadRowsrestante)
Définitions des types de requêtes
Le tableau suivant décrit chaque catégorie de modèle d'accès, son libellé query_type correspondant dans Monitoring, les opérations de bibliothèque cliente types et la méthode d'API de données sous-jacente (libellé de métrique method) auxquelles elle s'applique, ainsi que la manière dont Bigtable classe les requêtes dans cette catégorie. Étant donné que les noms de méthode varient selon le langage de programmation, le tableau liste les noms de méthode représentatifs de la bibliothèque cliente. Pour obtenir des exemples de code spécifiques à un langage, consultez les sections Exemples de lecture et Exemples d'écriture. Pour en savoir plus sur les filtres simples et complexes, consultez la section Filtres simples et filtres complexes de ce document.
| Type de requête | query_type étiquette de métrique |
Opération client et méthode de l'API Data | Critères de classification |
|---|---|---|---|
| Lecture par point | QUERY_TYPE_POINT_READ |
Lecture d'une seule ligne, telle que API Data : |
Lecture vers l'avant d'une seule clé de ligne qui n'utilise aucun filtre ou un filtre simple, où le nombre de cellules analysées et renvoyées et la taille totale de la réponse restent dans les limites d'une seule ligne. |
| Analyse courte | QUERY_TYPE_SHORT_SCAN |
Analyse de plage ou de préfixe de ligne, telle que API Data : |
Une analyse vers l'avant d'une seule plage de lignes contiguës qui n'utilise aucun filtre ou un filtre simple, où le nombre de lignes et de cellules analysées et renvoyées, ainsi que la taille totale de la réponse, restent dans des limites restreintes. |
| Analyse courte inversée | QUERY_TYPE_REVERSE_SHORT_SCAN |
Analyse inversée, telle que API Data : |
Analyse inversée d'une seule plage de lignes contiguës qui n'utilise aucun filtre ou un filtre simple, et qui reste dans les mêmes limites de lignes, de cellules et d'octets qu'une analyse courte. |
| Analyse inversée | QUERY_TYPE_REVERSE_SCAN |
Analyse inversée, telle que API Data : |
Toute lecture inversée qui ne correspond pas à une analyse courte inversée, par exemple une analyse inversée qui dépasse les limites de lignes, de cellules ou d'octets d'une analyse courte, spécifie des clés de ligne individuelles, analyse plusieurs plages de lignes ou utilise un filtre complexe. |
| Lecture creuse | QUERY_TYPE_SPARSE_READ |
Lecture filtrée ou analyse de cellules non collectées, à l'aide de API Data : |
Toute requête de lecture vers l'avant (évaluée après une lecture ponctuelle, une analyse courte et une analyse inverse) dans laquelle Bigtable analyse beaucoup plus de lignes ou de cellules qu'il n'en renvoie en raison de l'élimination des filtres ou de cellules non collectées en attente de récupération de mémoire. |
| Lecture groupée | QUERY_TYPE_BULK_READ |
Lecture multiligne, telle que API Data : |
Lecture vers l'avant qui spécifie une ou plusieurs clés de ligne sans filtre ou avec un filtre simple, qui dépasse les limites de lecture ponctuelle (par exemple, qui demande plusieurs clés de ligne ou lit une seule ligne volumineuse) et qui n'est pas considérée comme une lecture creuse. |
| Autre lecture | QUERY_TYPE_OTHER_READ |
Analyse de plage, analyse de plusieurs plages ou lecture filtrée de grande taille à l'aide de API Data : |
Toute requête |
| Écriture de point | QUERY_TYPE_POINT_WRITE |
Écriture simple, mise à jour incrémentielle ou petite écriture par lot, telle que API Data : |
Requête |
| Écriture par d'autres utilisateurs | QUERY_TYPE_OTHER_WRITE |
Écriture par lot volumineuse ou écriture simple volumineuse, telle que API Data : |
Toute requête |
| Lecture/Écriture | QUERY_TYPE_READ_WRITE |
Écriture ou ajout conditionnel, tel que API Data : |
Toute requête d'écriture conditionnelle ( |
Dans les métriques de nombre de requêtes et de latence, Bigtable étiquette les requêtes non classées, telles que les requêtes GoogleSQL pour Bigtable, comme QUERY_TYPE_UNKNOWN.
Filtres simples et filtres complexes
Pour être considérée comme une lecture ponctuelle, une analyse courte, une analyse courte inversée ou une lecture groupée, une requête ReadRows ne doit utiliser aucun filtre ou un filtre simple.
Bigtable classe un filtre comme simple s'il n'utilise que les types de filtres suivants, seuls ou combinés dans un filtre chain limité. Pour en savoir plus, consultez Chaîne.
- Aucun filtre (
FILTER_NOT_SET) pass_all_filteroublock_all_filtercolumn_range_filter,column_qualifier_regex_filteroufamily_name_regex_filtercells_per_column_limit_filter,cells_per_row_limit_filteroucells_per_row_offset_filtertimestamp_range_filter
Bigtable traite toute requête ReadRows comme utilisant un filtre complexe si la requête utilise un type de filtre qui ne figure pas dans la liste précédente, comme les suivants, ou si elle enchaîne un grand nombre de filtres :
value_regex_filtervalue_range_filterrow_key_regex_filterrow_sample_filterinterleaveconditionsinkstrip_value_transformerapply_label_transformer
Bigtable classe ces requêtes comme une analyse inversée si reversed est true, et comme une lecture creuse (si elle analyse beaucoup plus de lignes ou de cellules qu'elle n'en renvoie) ou une autre lecture.
Afficher les modèles d'accès
Vous pouvez afficher la page Modèles d'accès dans la console Google Cloud au niveau de l'instance ou du cluster.
Afficher les modèles d'accès d'une instance
Dans la console Google Cloud , ouvrez la liste des instances Bigtable.
Cliquez sur l'instance dont vous souhaitez consulter les métriques.
Dans le volet de navigation, sous Observabilité, cliquez sur Modèles d'accès.
Dans la liste Cluster, sélectionnez le cluster dont vous souhaitez inspecter les modèles d'accès. Par défaut, la console Google Cloud sélectionne le premier cluster de l'instance.
Dans la liste Critère de regroupement, choisissez comment répartir les graphiques :
- Aucun : option par défaut qui ventile tous les graphiques par modèle d'accès, par exemple
QUERY_TYPE_POINT_READ. - Profil d'application : ventile tous les graphiques par ID de profil d'application et par modèle d'accès.
- Tableau : décompose tous les graphiques par ID de table et par modèle d'accès.
- Aucun : option par défaut qui ventile tous les graphiques par modèle d'accès, par exemple
Facultatif : Pour modifier la période ou activer/désactiver l'actualisation automatique, utilisez le sélecteur de période.
Afficher les modèles d'accès d'un cluster
Dans la console Google Cloud , ouvrez la liste des instances Bigtable.
Cliquez sur l'instance dont vous souhaitez consulter les métriques.
La page de présentation de l'instance s'ouvre.
Dans le tableau des clusters, cliquez sur l'ID du cluster.
Dans le volet de navigation, cliquez sur Modèles d'accès. La page affiche les métriques du cluster sélectionné.
Dans la liste Critère de regroupement, choisissez comment répartir les graphiques :
- Aucun : option par défaut qui ventile tous les graphiques par modèle d'accès, par exemple
QUERY_TYPE_POINT_READ. - Profil d'application : ventile tous les graphiques par ID de profil d'application et par modèle d'accès.
- Tableau : décompose tous les graphiques par ID de table et par modèle d'accès.
- Aucun : option par défaut qui ventile tous les graphiques par modèle d'accès, par exemple
Facultatif : Pour modifier la période ou activer/désactiver l'actualisation automatique, utilisez le sélecteur de période.
Graphiques et métriques sur la page des modèles d'accès
La page Modèles d'accès fournit des graphiques pour les métriques suivantes :
| Métrique | Action disponible pour | Description |
|---|---|---|
| Distribution des RPS | Clusters Tables Profils d'application |
Proportion et taux moyen de requêtes par seconde (RPS) agrégés sur l'ensemble de la période sélectionnée pour le cluster, répartis par |
| Latence | Clusters Tables Profils d'application |
Latence des requêtes côté serveur au fil du temps, répartie par |
| RPS | Clusters Tables Profils d'application |
Taux de requêtes par seconde au fil du temps, réparti par |
| Lignes renvoyées | Clusters Tables Profils d'application |
Nombre de lignes que Bigtable renvoie au client par seconde pour les requêtes de lecture et de lecture/écriture après l'application des filtres. |
| Lignes analysées | Clusters Tables Profils d'application |
Nombre de lignes lues par Bigtable par seconde lors du traitement des requêtes de lecture et de lecture/écriture, avant l'application des filtres. La comparaison des lignes analysées avec les lignes renvoyées vous aide à identifier les filtres de lecture inefficaces. |
| Lignes modifiées | Clusters Tables Profils d'application |
Nombre de lignes modifiées par seconde par les requêtes d'écriture et de lecture/écriture. |
| Cellules détectées | Clusters Tables Profils d'application |
Nombre de cellules que Bigtable inspecte par seconde lors des requêtes de lecture et de lecture/écriture avant d'appliquer des filtres, y compris les cellules qu'il filtre ou qui sont en attente de récupération de mémoire. |
| Cellules envoyées | Clusters Tables Profils d'application |
Nombre de cellules que Bigtable renvoie au client par seconde après l'application des filtres. La comparaison des cellules vues avec les cellules envoyées vous aide à identifier les requêtes de lecture qui inspectent de nombreuses cellules pour chaque cellule renvoyée. |
| Octets envoyés | Clusters Tables Profils d'application |
Nombre d'octets de données de ligne encodées renvoyés par seconde. |
Vous pouvez également interroger ces métriques de manière programmatique à l'aide de l'API Cloud Monitoring, les afficher dans l'explorateur de métriques ou les ajouter à des tableaux de bord personnalisés. Chaque métrique bigtable.googleapis.com/query_type/* de la ressource surveillée bigtable_table inclut les étiquettes suivantes :
- Étiquettes de ressource :
project_id,instance,clusterettable - Étiquettes de métrique :
query_type,app_profileetmethod
Pour en savoir plus sur l'interrogation des métriques Bigtable dans Monitoring, consultez Surveiller avec Monitoring et Métriques.
Optimiser les charges de travail en fonction des modèles d'accès
Vous pouvez utiliser les métriques de la page Modèles d'accès pour prendre les décisions suivantes :
- Activer le niveau en mémoire pour les lectures ponctuelles à faible latence : si les graphiques Répartition des RPS, RPS et Latence affichent un volume élevé de requêtes
QUERY_TYPE_POINT_READsur des tables ou des profils d'application avec des objectifs de latence de lecture stricts, envisagez d'activer le niveau en mémoire disponible dans l'édition Enterprise Plus. Regroupez les graphiques par Table ou Profil d'application pour identifier les tables et les charges de travail qui en bénéficieront le plus. - Isoler les analyses volumineuses et les lectures par lot avec Data Boost : si vous observez des volumes élevés ou des pics périodiques de requêtes
QUERY_TYPE_BULK_READouQUERY_TYPE_OTHER_READpartageant un cluster avec un trafic de diffusion sensible à la latence, regroupez par profil d'application pour identifier la source des analyses. Acheminez les lectures par lot, de reporting ou d'analyse via un profil d'application dédié configuré pour utiliser l'informatique sans serveur Data Boost, afin que les analyses volumineuses n'entrent pas en concurrence avec les nœuds de diffusion pour les ressources de processeur. - Réduire la surcharge de filtrage et régler la récupération de mémoire : si vous constatez un taux élevé de requêtes
QUERY_TYPE_SPARSE_READ, si le nombre de lignes analysées est beaucoup plus élevé que celui des lignes renvoyées, ou si le nombre de cellules vues est beaucoup plus élevé que celui des cellules envoyées, cela signifie que vos requêtes de lecture analysent des données que Bigtable ne renvoie pas au client. Pour améliorer l'efficacité des lectures, procédez comme suit :- Limitez vos plages ou préfixes de clés de ligne dans la requête de lecture plutôt que de vous fier aux filtres de valeur ou d'expression régulière pour supprimer des lignes.
- Incluez un filtre de limite de cellules, tel que
cells_per_column_limit_filter, lorsque votre application n'a besoin que des versions de cellules les plus récentes. Pour en savoir plus, consultez Limite de cellules par colonne. - Examinez vos règles de récupération de mémoire afin que les versions de cellules expirées ou obsolètes ne s'accumulent pas et ne ralentissent pas les analyses. Pour en savoir plus, consultez la présentation de la récupération de mémoire.
- Remplacez les analyses inversées par des analyses directes : si vous observez des requêtes
QUERY_TYPE_REVERSE_SCANouQUERY_TYPE_REVERSE_SHORT_SCANfréquentes avec une latence élevée, envisagez de concevoir vos clés de ligne de sorte que votre application puisse émettre des analyses directes. Pour en savoir plus, consultez les bonnes pratiques de conception de schémas.
Étapes suivantes
- Surveiller les performances des instances avec les insights système
- Analyser les schémas d'utilisation des clés de ligne avec Key Visualizer
- Résoudre les problèmes de latence