Системные таблицы

Обзор

Системные таблицы ADQM — это таблицы в базе данных system, предоставляющие системную информацию, которая может быть полезна администраторам и разработчикам для управления базами данных, оптимизации запросов, мониторинга производительности системы, анализа и устранения ошибок. Например, из системных таблиц можно получить:

  • данные о состоянии сервера и его внутренних процессах;

  • информацию о сконфигурированных кластерах, существующих базах данных, таблицах, столбцах и кусках данных;

  • собираемые в режиме реального времени метрики сервера ClickHouse и данные о событиях, произошедших в системе;

  • текущие значения конфигурационных параметров;

  • справочную информацию о доступных опциях для построения запросов.

Данные большинства системных таблиц хранятся в оперативной памяти. Эти таблицы автоматически создаются при старте сервера ClickHouse и доступны только для чтения. Их нельзя удалять или изменять, но можно отсоединять.

К системным таблицам ADQM также относятся таблицы для хранения различных типов логов (лог-таблицы с именем *_log), которые начинают заполняться и становятся доступны из базы данных system, если соответствующее логирование активировано. В отличие от других системных таблиц, лог-таблицы основаны на табличном движке MergeTree. Данные этих таблиц хранятся в файловой системе и не удаляются автоматически, что гарантирует доступ к логам для анализа после перезапуска сервера. В статье Логирование можно получить подробную информацию о том, какие типы логов можно записывать в системные таблицы, как включить ведение логов и настроить соответствующие лог-таблицы.

Список системных таблиц

Полный список доступных системных таблиц можно посмотреть через запрос:

SHOW TABLES FROM system;
Список доступных системных таблиц

 

Пример результата выполнения запроса SHOW TABLES FROM system (в списке отсутствуют таблицы *_log, так как логирование в ADQM не было включено):

    ┌─name───────────────────────────┐
 1. │ aggregate_function_combinators │
 2. │ asynchronous_inserts           │
 3. │ asynchronous_loader            │
 4. │ asynchronous_metrics           │
 5. │ backups                        │
 6. │ build_options                  │
 7. │ certificates                   │
 8. │ clusters                       │
 9. │ collations                     │
10. │ columns                        │
11. │ contributors                   │
12. │ current_roles                  │
13. │ dashboards                     │
14. │ data_skipping_indices          │
15. │ data_type_families             │
16. │ database_engines               │
17. │ databases                      │
18. │ detached_parts                 │
19. │ dictionaries                   │
20. │ disks                          │
21. │ distributed_ddl_queue          │
22. │ distribution_queue             │
23. │ dns_cache                      │
24. │ dropped_tables                 │
25. │ dropped_tables_parts           │
26. │ enabled_roles                  │
27. │ errors                         │
28. │ events                         │
29. │ filesystem_cache               │
30. │ formats                        │
31. │ functions                      │
32. │ generateSeries                 │
33. │ generate_series                │
34. │ grants                         │
35. │ graphite_retentions            │
36. │ jemalloc_bins                  │
37. │ kafka_consumers                │
38. │ keywords                       │
39. │ licenses                       │
40. │ macros                         │
41. │ merge_tree_settings            │
42. │ merges                         │
43. │ metrics                        │
44. │ models                         │
45. │ moves                          │
46. │ mutations                      │
47. │ mysql_binlogs                  │
48. │ named_collections              │
49. │ numbers                        │
50. │ numbers_mt                     │
51. │ one                            │
52. │ part_moves_between_shards      │
53. │ parts                          │
54. │ parts_columns                  │
55. │ privileges                     │
56. │ processes                      │
57. │ projection_parts               │
58. │ projection_parts_columns       │
59. │ query_cache                    │
60. │ quota_limits                   │
61. │ quota_usage                    │
62. │ quotas                         │
63. │ quotas_usage                   │
64. │ remote_data_paths              │
65. │ replicas                       │
66. │ replicated_fetches             │
67. │ replicated_merge_tree_settings │
68. │ replication_queue              │
69. │ rocksdb                        │
70. │ role_grants                    │
71. │ roles                          │
72. │ row_policies                   │
73. │ s3queue                        │
74. │ scheduler                      │
75. │ schema_inference_cache         │
76. │ server_settings                │
77. │ settings                       │
78. │ settings_changes               │
79. │ settings_profile_elements      │
80. │ settings_profiles              │
81. │ stack_trace                    │
82. │ storage_policies               │
83. │ symbols                        │
84. │ table_engines                  │
85. │ table_functions                │
86. │ tables                         │
87. │ time_zones                     │
88. │ user_directories               │
89. │ user_processes                 │
90. │ users                          │
91. │ view_refreshes                 │
92. │ warnings                       │
93. │ zeros                          │
94. │ zeros_mt                       │
95. │ zookeeper                      │
96. │ zookeeper_connection           │
    └────────────────────────────────┘

 

Ниже системные таблицы ADQM сгруппированы по типу информации, которую они предоставляют.

Состояние сервера | Текущие процессы | Кеши
Системная таблица Данные в таблице

merges

Информация о слияниях и мутациях кусков данных, которые выполняются в настоящее время для таблиц семейства MergeTree

mutations

Информация о ходе выполнения мутаций таблиц семейства MergeTree

processes

Информация обо всех запросах, выполняемых в данный момент

moves

Информация о текущих перемещениях кусков данных таблиц MergeTree на другие диски или тома хранилища (инициированных, например, условием TTL или запросом ALTER TABLE …​ MOVE PARTITION|PART …​ TO DISK|VOLUME)

replicated_fetches

Информация о выполняемых в данный момент фоновых операциях скачивания кусков данных с реплик

stack_trace

Трассировки стека всех серверных потоков (можно использовать для анализа состояния сервера)

asynchronous_inserts

Информация об ожидающих асинхронных вставках в очереди

asynchronous_loader

Информация и статус по последним асинхронным заданиям (например, для загрузки таблиц)

query_cache

Содержимое кеша запросов

dns_cache

Содержимое DNS-кеша

filesystem_cache

Информация о записях в кеше файловой системы для удаленных объектов

Кластеры | Шардирование | Репликация | ZooKeeper
Системная таблица Данные в таблице

clusters

Информация о кластерах, описанных в конфигурационном файле

macros

Макросы, которые будут использоваться для автоматической подстановки идентификаторов шарда и реплики, соответствующих хосту, при создании реплицируемых таблиц в кластерах (параметры из секции macros конфигурации сервера)

replicas

Информация о реплицируемых таблицах, расположенных на сервере

replication_queue

Информация о задачах из очередей репликации, хранящихся в ZooKeeper или ClickHouse Keeper, для таблиц семейства ReplicationMergeTree

distribution_queue

Информация о локальных файлах, которые находятся в очереди для отправки на шарды (эти локальные файлы содержат новые куски данных, которые создаются путем вставки новых данных в таблицу Distributed в асинхронном режиме)

distributed_ddl_queue

Информация о распределенных DDL-запросах, которые были выполнены в кластере (запросы с ON CLUSTER)

zookeeper

Данные из кластера ZooKeeper или ClickHouse Keeper, описанного в конфигурации (можно получить список дочерних элементов для определенного узла или записанное внутри него значение)

zookeeper_connection

Текущие подключения к ZooKeeper или ClickHouse Keeper

Примеры

  • Информация о сконфигурированных логических кластерах:

    SELECT cluster, shard_num, replica_num, host_name FROM system.clusters;
  • Проверка работоспособности реплики:

    SELECT database, table, last_queue_update_exception, zookeeper_exception FROM system.replicas WHERE is_readonly;

    Если таблица заблокирована на запись (например, потому что в файле config.xml нет секции конфигурации ZooKeeper/ClickHouse Keeper или при переинициализации сессии в ZooKeeper/ClickHouse Keeper произошла ошибка), сообщения об ошибках можно посмотреть в полях last_queue_update_exception и zookeeper_exception.

  • Состояние очереди репликации:

    SELECT database, table, replica_name, type, num_postponed, postpone_reason, num_tries, last_exception
    FROM system.replication_queue FORMAT Vertical;
Базы данных | Таблицы | Столбцы | Куски данных | Словари
Системная таблица Данные в таблице

databases

Информация о базах данных, доступных для текущего пользователя

tables

Информация обо всех таблицах, о которых "знает" сервер (отключенные через DETACH TABLE таблицы не учитываются)

columns

Информация о столбцах таблиц

parts

Информация о кусках данных таблиц семейства MergeTree

parts_columns

Информация о столбцах всех существующих на данный момент кусков данных таблиц MergeTree

detached_parts

Информация об отсоединенных кусках данных таблиц семейства MergeTree

dropped_tables

Информация об удаленных из баз данных таблицах, очистка данных которых еще не выполнена полностью

dropped_tables_parts

Информация о кусках данных удаленных таблиц MergeTree, перечисленных в system.dropped_tables

projection_parts

Информация о существующих на данный момент кусках данных, созданных для всех проекций всех таблиц в кластере (это копии родительских кусков данных, в которых данные агрегированы или отсортированы в другом порядке). Эта таблица схожа с system.parts, но содержит дополнительную информацию о родительских кусках данных в столбцах с префиксом parent_

projection_parts_columns

Информация о столбцах всех существующих на данный момент кусков данных проекций таблиц MergeTree

data_skipping_indices

Информация о существующих индексах пропуска данных во всех таблицах

dictionaries

Информация о словарях

named_collections

Сконфигурированные именованные коллекции (named collections) — реквизиты для подключения к внешним источникам при использовании словарей, таблиц, табличных функций

Примеры

  • Список столбцов таблицы с типами данных:

    SELECT name, type FROM system.columns WHERE table = '<table_name>';
  • Информация о кусках данных таблицы:

    SELECT name, active, rows, data_compressed_bytes, data_uncompressed_bytes
    FROM system.parts WHERE table = '<table_name>'
    FORMAT Vertical;

    где <table_name> — имя таблицы.

Система управления доступом
Системная таблица Данные в таблице

users

Информация об аккаунтах пользователей, настроенных на сервере

grants

Привилегии, предоставленные пользователям (список доступных для назначения привилегий можно посмотреть в системной таблице system.privileges)

roles, role_grants, current_roles, enabled_roles

Информация о ролях и их назначениях пользователям

row_policies

Информация о политиках доступа к строкам

settings_profiles

Сконфигурированные профили настроек

settings_profile_elements

Описание содержимого профиля настроек (настройки и их значения; ограничения; роли и пользователи, к которым применяются настройки; родительские профили настроек)

quota_limits, quota_usage, quotas, quotas_usage

Информация о квотах и их использовании

Хранилище данных
Системная таблица Данные в таблице

disks

Информация о сконфигурированных дисках

storage_policies

Информация о сконфигурированных политиках хранения

Примеры

  • Информация о дисках хранилища данных:

    SELECT
        name,
        path,
        formatReadableSize(free_space) AS free,
        formatReadableSize(total_space) AS total,
        formatReadableSize(keep_free_space) AS reserved
    FROM system.disks;
  • Информация о сконфигурированных в ADQM политиках хранения:

    SELECT policy_name, volume_name, disks FROM system.storage_policies;
Метрики сервера ClickHouse | Ошибки и предупреждения
Системная таблица Данные в таблице

metrics

Метрики, которые рассчитываются в каждый момент времени и имеют актуальные текущие значения (см. Metrics в разделе Типы метрик статьи Метрики мониторинга кластера ADQM)

events

Информация о количестве событий, произошедших в системе (см. ProfileEvents в разделе Типы метрик статьи Метрики мониторинга кластера ADQM)

asynchronous_metrics

Метрики, которые периодически вычисляются в фоновом режиме (см. AsynchronousMetrics в разделе Типы метрик статьи Метрики мониторинга кластера ADQM)

user_processes

Информация об использовании памяти процессами, которые запустил пользователь, и событиях ProfileEvents для пользователя

errors

Информация обо всех произошедших ошибках (для каждого типа ошибки выводится код и сообщение об ошибке, общее количество срабатываний и время последнего срабатывания, трассировка стека для отладки)

warnings

Предупреждающие сообщения о конфигурации сервера (если таблица не пустая, содержащиеся в ней предупреждающие сообщения будут выводиться при подключении к серверу ClickHouse через clickhouse-client)

backups

Информация обо всех операциях BACKUP и RESTORE (таблица не является персистентной, то есть она содержит только операции, выполненные после последнего перезапуска сервера)

jemalloc_bins

Информация о распределении памяти, выполненном с помощью jemalloc в классах разных размеров (bins), агрегированная со всех арен (arenas). Эта статистика может быть не совсем точной из-за локального кеширования потоков в jemalloc

Примеры

  • Информация об ошибках:

    SELECT name, code, value, last_error_time FROM system.errors;
  • Значение конкретной метрики (например, Query — количество выполняемых запросов):

    SELECT * FROM system.metrics WHERE metric = 'Query';
Настройки
Системная таблица Данные в таблице

settings

Настройки на уровне пользователя (которые можно изменять в рамках отдельного запроса или сессии)

server_settings

Глобальные настройки сервера, указанные в config.xml

merge_tree_settings

Список всех настроек табличного движка MergeTree, их текущие значения и значения по умолчанию, а также описания. Эти параметры можно настраивать при создании или модификации таблицы, используя выражение SETTINGS в запросе CREATE TABLE или ALTER TABLE соответственно

replicated_merge_tree_settings

Список всех настроек табличного движка ReplicatedMergeTree, их текущие значения и значения по умолчанию, а также описания. Эти параметры можно настраивать при создании или модификации таблицы, используя выражение SETTINGS в запросе CREATE TABLE или ALTER TABLE соответственно

settings_changes

Информация об изменениях настроек в различных версиях ClickHouse

build_options

Параметры сборки сервера ClickHouse

Примеры

Настройки, значения по умолчанию которых были изменены (например, при устранении неполадок может быть полезно проанализировать, не могло ли изменение каких-либо настроек повлиять на поведение системы):

SELECT name, value FROM system.settings WHERE changed;
SELECT name, value FROM system.server_settings WHERE changed;
Информация для разных табличных движков
Системная таблица Данные в таблице

mysql_binlogs

Список активных бинарных журналов обновлений MySQL (файлов binlog) для баз данных MaterializedMySQL

kafka_consumers

Информация о потребителях Kafka (таблицах на базе движка Kafka)

rocksdb

Статистика RocksDB при настроенной в ADQM интеграции через табличный движок EmbeddedRocksDB

graphite_retentions

Информация о параметрах graphite_rollup, которые используются в таблицах GraphiteMergeTree

s3queue

Состояние S3Queue в памяти: какие файлы обрабатываются в данный момент, какие файлы обработаны или обработать не удалось

Данные для тестирования

 
ADQM предоставляет набор таблиц, которые могут быть полезны для выполнения тестирования и генерации последовательных значений.

Системная таблица Данные в таблице

numbers

Таблица содержит один столбец number (типа UInt64) со всеми натуральными числами от 0 в отсортированном порядке. Чтение из таблицы не распараллеливается. Эту таблицу можно также получить с помощью табличной функции numbers

numbers_mt

Таблица, аналогичная system.numbers, но чтение распараллеливается. Числа могут возвращаться в произвольном порядке

zeros

Таблица содержит один столбец zero (типа UInt64) с нулями. Можно использовать для тестов производительности вместо system.numbers как самый быстрый способ создать большое количество строк

zeros_mt

Таблица, аналогичная system.zeros, но чтение распараллеливается

generate_series, generateSeries

Таблица содержит один столбец generate_series (типа UInt64) со всеми натуральными числами от 0 в отсортированном порядке. Чтобы получить такую же таблицу с арифметической прогрессией отсортированных натуральных чисел в указанном диапазоне с указанным шагом, можно также использовать табличные функции generate_series или generateSeries

one

Таблица содержит значение 0 в единственной строке с одним столбцом dummy типа UInt8 (аналог таблицы DUAL в других СУБД). Эта таблица используется, если в запросе SELECT не указана секция FROM — например, SELECT 1

Справочная информация
Системная таблица Данные в таблице

functions

Поддерживаемые функции (обычные и агрегатные)

aggregate_function_combinators

Комбинаторы для агрегатных функций

table_functions

Поддерживаемые табличные функции

database_engines

Поддерживаемые движки баз данных

table_engines

Поддерживаемые табличные движки и их функциональные возможности

data_type_families

Поддерживаемые типы данных

formats

Поддерживаемые форматы входных и выходных данных

privileges

Поддерживаемые типы привилегий, которые можно предоставлять пользователям

keywords

Ключевые слова, которые можно использовать в синтаксисе запросов

time_zones

Часовые пояса, которые поддерживаются сервером ClickHouse

collations

Поддерживаемые значения collation (сравнение), которые можно использовать в запросах с ORDER BY …​ COLLATE <'collation_name'> для сортировки по строковым значениям с учетом алфавита указанного языка

Пример

Список доступных агрегатных функций:

SELECT name FROM system.functions WHERE is_aggregate = 1;
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней