Ответ
query_log в базе данных system хранит информацию обо всех ваших запросах, включая:
- сколько памяти потребил запрос, и
- сколько процессорного времени потребовалось
initial_query_id — это идентификатор исходного запроса при выполнении распределённого запроса, запущенного с узла, принимающего запрос. query_id содержит идентификатор дочернего запроса, который выполняется на другом узле. Подробнее см. в этой статье.youtube (см. набор данных о дизлайках YouTube):
initial_query_id VS query_id
initial_query_id — это идентификатор исходного запроса для выполнения распределённого запроса, запущенного с узла, принимающего запрос;
а поле query_id содержит идентификатор дочернего запроса, выполняемого на другом узле.
Распределённое выполнение — не единственная причина различий в значениях
query_idОдин запрос также может порождать внутренние подзапросы, которые записываются со своими собственными query_id и is_initial_query = 0 — чаще всего это внутренние запросы, которые ClickHouse выполняет для обработки представлений. Эти внутренние идентификаторы назначаются ClickHouse и могут не совпадать по формату с идентификатором, который передаётся вашему клиенту; на этапах, связанных с представлениями, вы можете увидеть значения query_id, содержащие метку вроде queryView.... Если вам нужен запрос именно в том виде, в котором вы его отправили, фильтруйте по is_initial_query = 1 (или query_id = initial_query_id). Это серверное поведение query_log, и оно одинаково для любого клиента, включая Cloud SQL Console.query_id в приведённый выше запрос, поиск будет ограничен значениями initial_query_id = a7262fa2-bd8b-4b51-a359-621ccf282417 и hostname():
query_id != initial_query_id в предложение WHERE:
query_id = initial_query_id вернёт только запросы, выполненные на локальном узле, на котором распределённый запрос был изначально запущен: