Quand l’utiliser
query_log n’est pas répliquée, et seules les requêtes exécutées sur un nœud spécifique y sont journalisées. Les données peuvent également être basculées vers une autre table. Par exemple, elles peuvent être insérées dans query_log_0, query_log_1, etc. Comme un nœud peut effectuer cette bascule à un moment différent des autres, il est utile d’essayer de trouver les données recherchées dans des tables qui ne portent pas exactement le même nom.
En pratique, nous devons faire quelque chose comme ceci, mais avec la syntaxe ClickHouse :
SELECT column1, column2 FROM my_db.my_table_*
Pour cela, nous pouvons utiliser clusterAllReplicas() pour rechercher sur tous les nœuds, ainsi que la table function merge() afin d’utiliser un motif regex pour rechercher dans plusieurs tables.
L’exemple suivant montre comment interroger toutes les tables ayant le préfixe query_log :
EXCEPT pour exclure les colonnes qui peuvent être absentes de certaines tables.
Exemple :