背景
之前介紹過ClickHouse相關的系列文章,現在ClickHouse已經能正常使用起來了,包括副本和分片。因為ClickHouse已經可以提供服務了,現在需要關心的就是服務期間該資料庫的各項效能指標的情況,如CPU、記憶體、查詢等等。其實在安裝完ClickHouse之後,有個內建的資料庫system,該庫下儲存了很多需要的資訊,類似於MySQL中的information_schema和performance_schema。那麼現在就來介紹下ClickHouse的系統庫,方便在使用的時候進行分析。
說明
系統表提供的資訊如下:
- 伺服器的狀態、程式以及環境。
- 伺服器的內部程式。
系統表:
- 儲存於
system
資料庫。 - 僅提供資料讀取功能。
- 不能被刪除或更改,但可以對其進行分離(detach)操作。
大多數系統表將其資料儲存在RAM中, 一個ClickHouse服務在剛啟動時便會建立此類系統表。
使用者可以通過在/etc/clickhouse-server/config.d/
下建立與系統表同名的配置檔案, 或者在/etc/clickhouse-server/config.xml
中設定相應配置項,來自定義系統日誌表的結構。可供自定義的配置項如下:
<yandex> <query_log> <database>system</database> <table>query_log</table> <partition_by>toYYYYMM(event_date)</partition_by> <ttl>event_date + INTERVAL 30 DAY DELETE</ttl> <!-- <engine>ENGINE = MergeTree PARTITION BY toYYYYMM(event_date) ORDER BY (event_date, event_time) SETTINGS index_granularity = 1024</engine> --> <flush_interval_milliseconds>7500</flush_interval_milliseconds> </query_log> </yandex>
說明:
database
: 系統日誌表所在的資料庫。這個選專案前已經不推薦使用。所有的系統日表都位於system
庫中。table
: 接收資料寫入的系統日誌表。partition_by
: 指定PARTITION BY表示式。ttl
: 指定系統日誌表TTL選項。flush_interval_milliseconds
: 指定日誌表資料重新整理到磁碟的時間間隔。engine
: 指定完整的表引擎定義(ENGINE
)。 這個選項與partition_by
以及ttl
衝突。如果與兩者一起設定,服務啟動時會丟擲異常並且退出。
預設情況下,表增長是無限的,可以通過TTL 刪除過期日誌記錄的設定來控制表的大小,也可以使用分割槽功能 MergeTree 引擎表。進入到system資料庫,看該庫下的所有表:
:) show tables; ┌─name───────────────────────────┐ │ aggregate_function_combinators │ │ asynchronous_metric_log │ │ asynchronous_metrics │ │ build_options │ │ clusters │ │ collations │ │ columns │ │ contributors │ │ current_roles │ │ data_type_families │ │ databases │ │ detached_parts │ │ dictionaries │ │ disks │ │ distributed_ddl_queue │ │ distribution_queue │ │ enabled_roles │ │ errors │ │ events │ │ formats │ │ functions │ │ grants │ │ graphite_retentions │ │ licenses │ │ macros │ │ merge_tree_settings │ │ merges │ │ metric_log │ │ metrics │ │ models │ │ mutations │ │ numbers │ │ numbers_mt │ │ one │ │ parts │ │ parts_columns │ │ privileges │ │ processes │ │ projection_parts │ │ projection_parts_columns │ │ query_log │ │ query_thread_log │ │ quota_limits │ │ quota_usage │ │ quotas │ │ quotas_usage │ │ replicas │ │ replicated_fetches │ │ replicated_merge_tree_settings │ │ replication_queue │ │ role_grants │ │ roles │ │ row_policies │ │ settings │ │ settings_profile_elements │ │ settings_profiles │ │ stack_trace │ │ storage_policies │ │ table_engines │ │ table_functions │ │ tables │ │ time_zones │ │ trace_log │ │ user_directories │ │ users │ │ zeros │ │ zeros_mt │ │ zookeeper │ └────────────────────────────────┘
現在開始進行相關的介紹說明:
- aggregate_function_combinators:聚合函式組合器表,聚合函式的名稱可以附加一個字尾,會改變原聚合函式的工作方式。
:) select * from aggregate_function_combinators; ┌─name────────┬─is_internal─┐ │ SimpleState │ 0 │ │ OrDefault │ 0 │ │ Distinct │ 0 │ │ Resample │ 0 │ │ ForEach │ 0 │ │ OrNull │ 0 │ │ Merge │ 0 │ │ State │ 0 │ │ Array │ 0 │ │ Null │ 1 │ │ If │ 0 │ └─────────────┴─────────────┘
如組合函式:sumIf、sumArray、avgOrDefault、sumOrNull等等。
- asynchronous_metrics:包含在後臺定期計算的指標。 例如,正在使用的 RAM 量。
- asynchronous_metric_log:包含 asynchronous_metrics 的歷史值,每分鐘儲存一次,預設啟用。
- build_options:構建選項,包含版本號、系統、編譯資訊等。
- clusters:包含有關配置檔案中可用的叢集及其中的伺服器的資訊。
:) select * from clusters limit 1\G Row 1: ────── cluster: cluster_3shard_0repl shard_num: 1 shard_weight: 1 replica_num: 1 host_name: 172.16.150.215 host_address: 172.16.150.215 port: 9000 is_local: 1 user: default default_database: errors_count: 0 slowdowns_count: 0 estimated_recovery_time: 0
cluster
(String) — 叢集名稱shard_num
(UInt32) — 分片數量,從1開始計數shard_weight
(UInt32) — 分片權重,寫入資料使用replica_num
(UInt32) — 分片的副本,從1開始計數host_name
(String) — 主機名host_address
(String) — IP地址port
(UInt16) — 埠user
(String) — 連線伺服器的使用者名稱errors_count
(UInt32) - 此主機無法訪問副本的次數estimated_recovery_time
(UInt32) - 距離副本錯誤計數為零並被認為恢復正常的秒數
:) select * from columns where table = 'ck_3shard_0repl' limit 1 FORMAT Vertical ; Row 1: ────── database: default table: ck_3shard_0repl name: id type: String position: 1 default_kind: default_expression: data_compressed_bytes: 0 data_uncompressed_bytes: 0 marks_bytes: 0 comment: is_in_partition_key: 0 is_in_sorting_key: 1 is_in_primary_key: 1 is_in_sampling_key: 0 compression_codec:
- database (String) — 庫名
- table (String) — 表名
- name (String) — 列名
- type (String) — 列型別
- default_kind (String) — 表示式型別 (DEFAULT, MATERIALIZED, ALIAS) 為預設值,如果沒有定義,則為空字串
- default_expression (String) — 預設值的表示式,如果未定義則為空字串
- data_compressed_bytes (UInt64) — 壓縮資料的大小,以位元組為單位
- data_uncompressed_bytes (UInt64) — 解壓縮資料的大小,以位元組為單位
- marks_bytes (UInt64) — 標記的大小,以位元組為單位
- comment (String) — 列註釋,如果未定義,則為空字串
- is_in_partition_key (UInt8) — 列是否在分割槽表示式中的標誌
- is_in_sorting_key (UInt8) — 列是否在排序鍵表示式中的標誌
- is_in_primary_key (UInt8) — 列是否在主鍵表示式中的標誌
- is_in_sampling_key (UInt8) — 列是否在取樣鍵表示式中的標誌
:) select * from databases; ┌─name────┬─engine─┬─data_path─────────────────┬─metadata_path──────────────────────────────────────────────────────┬─uuid─────────────────────────────────┐ │ default │ Atomic │ /ccdata/clickhouse/store/ │ /ccdata/clickhouse/store/f16/f166c36c-b553-4f44-b166-c36cb5535f44/ │ f166c36c-b553-4f44-b166-c36cb5535f44 │ │ system │ Atomic │ /ccdata/clickhouse/store/ │ /ccdata/clickhouse/store/fba/fbadef24-42af-425c-bbad-ef2442afd25c/ │ fbadef24-42af-425c-bbad-ef2442afd25c │ │ testdb │ Atomic │ /ccdata/clickhouse/store/ │ /ccdata/clickhouse/store/97a/97ac5640-b7e0-40fc-97ac-5640b7e030fc/ │ 97ac5640-b7e0-40fc-97ac-5640b7e030fc │ └─────────┴────────┴───────────────────────────┴────────────────────────────────────────────────────────────────────┴──────────────────────────────────────┘
- name (String) — 庫名
- engine (String) — 資料庫引擎
- data_path (String) — 資料庫路徑
- metadata_path (String) — 資料庫後設資料路徑
- uuid (UUID) — 資料庫 UUID
:) select * from disks; ┌─name────┬─path────────────────┬───free_space─┬──total_space─┬─keep_free_space─┬─type──┐ │ default │ /ccdata/clickhouse/ │ 167115030528 │ 211242639360 │ 0 │ local │ └─────────┴─────────────────────┴──────────────┴──────────────┴─────────────────┴───────┘
- name (String) — 伺服器配置中磁碟的名稱
-
path (String) — 檔案系統中掛載點的路徑
-
free_space (UInt64) — 磁碟上的可用空間(以位元組為單位)
-
total_space (UInt64) — 磁碟的總空間(以位元組為單位)
-
keep_free_space (UInt64) — 在磁碟上保持空閒的磁碟空間量(以位元組為單位),在磁碟配置的 keep_free_space_bytes 引數中定義
:) select * from distributed_ddl_queue limit 1\G Row 1: ────── entry: query-0000000001 host_name: 172.16.150.215 host_address: 172.16.150.215 port: 9000 status: Finished cluster: cluster_3shard_0repl query: CREATE TABLE default.ck_3shard_0repl UUID '79de44ac-d101-48fe-b9de-44acd10118fe' ON CLUSTER cluster_3shard_0repl (`id` String, `price` Float64, `create_time` DateTime) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/ck_3shard_0repl', '{replica}') PARTITION BY toYYYYMM(create_time) ORDER BY id initiator: dba05:9000 query_start_time: 2021-06-23 14:09:44 query_finish_time: 2021-06-23 14:09:44 query_duration_ms: 2 exception_code: ZOK
- entry (String) — 查詢ID
- host_name (String) — 主機名
- host_address (String) — IP
- port (UInt16) — 埠.
- status (Enum8) — 查詢狀態
- cluster (String) — 叢集名稱
- query (String) — 執行的語句
- initiator (String) — 執行查詢的節點
- query_start_time (DateTime) — 查詢開始時間
- query_finish_time (DateTime) — 查詢完成時間
- query_duration_ms (UInt64) — 執行時間,毫秒
- exception_code (Enum8) —ZooKeeper 的異常程式碼
-
database (String) — 庫名
-
table (String) — 表名
-
data_path (String) — 包含本地檔案的資料夾的路徑
-
is_blocked (UInt8) — 標誌指示是否阻止向伺服器傳送本地檔案
-
error_count (UInt64) — 錯誤數
-
data_files (UInt64) — 資料夾中的本地檔案數
-
data_compressed_bytes (UInt64) — 本地檔案中壓縮資料的大小,以位元組為單位
-
broken_data_files (UInt64) — 已被標記為已損壞(由於錯誤)的檔案數
-
broken_data_compressed_bytes (UInt64) — 損壞檔案中壓縮資料的大小,以位元組為單位
-
last_exception (String) — 關於發生的最後一個錯誤(如果有)的文字訊息
:) select * from errors limit 1\G Row 1: ────── name: UNKNOWN_TABLE code: 60 value: 4 last_error_time: 2021-06-24 16:36:26 last_error_message: Table system.distributed_queue doesn't exist last_error_trace: [146125178,147250595,257307633,257252227,257275592,262398676,260617881,260615518,262156135,258538161,258535714,263981828,263975971,272522930,272600505,312435887,312442682,313728825,313712426,140717595119269,140717592140285] remote: 0
- name (String) — 錯誤的名稱 (errorCodeToName)。
- code (Int32) — 錯誤的程式碼編號。
- value (UInt64) — 此錯誤發生的次數。
- last_error_time (DateTime) — 上次發生錯誤的時間。
- last_error_message (String) — 最後一個錯誤的訊息。
- last_error_trace (Array(UInt64)) — 堆疊跟蹤,表示儲存呼叫方法的實體地址列表。
- remote (UInt8) — 遠端異常(即在分散式查詢之一期間收到)。
:) select * from grants; ...
- user_name (Nullable(String)) — 使用者名稱
- role_name (Nullable(String)) — 分配給使用者帳戶的角色
- access_type (Enum8) — 使用者的訪問引數
- database (Nullable(String)) — 庫名
- table (Nullable(String)) — 表名
- column (Nullable(String)) — 授予訪問許可權的列的名稱
- is_partial_revoke (UInt8) — 邏輯值。 它顯示某些許可權是否已被撤銷。 可能的值:0 — 該行描述了部分撤銷;1 — 該行描述了一項授權
- grant_option (UInt8) — 使用 WITH GRANT OPTION 授予許可權
:) select * from merge_tree_settings limit 1\G Row 1: ────── name: min_compress_block_size value: 0 changed: 0 description: When granule is written, compress the data in buffer if the size of pending uncompressed data is larger or equal than the specified threshold. If this setting is not set, the corresponding global setting is used. type: UInt64
- name (String) — 設定名稱。
- value (String) — 設定值。
- description (String) — 設定描述。
- type (String) — 設定型別(實現特定的字串值)。
- changed (UInt8) — 是否更改。
:) select * from merges; ...
- database (String) — 表所在的資料庫的名稱。
- table (String) — 表名。
- elapsed (Float64) — 自合併開始以來經過的時間(以秒為單位)。
- progress (Float64) — 已完成工作的百分比,從 0 到 1。
- num_parts (UInt64) — 要合併的片段數。
- result_part_name (String) — 將作為合併結果形成的部分的名稱。
- is_mutation (UInt8) — 如果此過程是分割槽mutaion,則為 1。
- total_size_bytes_compressed (UInt64) — 合併塊中壓縮資料的總大小。
- total_size_marks (UInt64) — 合併部分中的標記總數。
- bytes_read_uncompressed (UInt64) — 讀取的未壓縮位元組數。
- rows_read (UInt64) — 讀取的行數。
- bytes_written_uncompressed (UInt64) — 寫入的未壓縮位元組數。
- rows_written (UInt64) — 寫入的行數。
- memory_usage (UInt64) — 合併過程的記憶體消耗。
- thread_id (UInt64) — 合併程式的執行緒 ID。
- merge_type — 當前合併的型別,如果是突變則為空。
- merge_algorithm — 當前合併中使用的演算法,如果是突變則為空。
:) select * from mutations; ...
- database (String) — 庫名
- table (String) — 表名
- mutation_id (String) — mutation ID。對於複製表,這些 ID 對應於 ZooKeeper的 ../mutations/ 目錄中的 znode 名稱。對於非複製表,ID 對應於表資料目錄中的檔名。
- command (String) — 命令的字串(ALTER TABLE [db.]table 之後的查詢部分)。
- create_time (Datetime) — 提交變更命令以供執行的日期和時間。
- block_numbers.partition_id (Array(String)) — 對於複製表,陣列包含分割槽的 ID(每個分割槽一個記錄)。對於非複製表,陣列為空。
- block_numbers.number (Array(Int64)) — 對於複製表,陣列包含每個分割槽的一條記錄,以及獲得的塊號。只有包含數字小於此數字的塊的部分才會在分割槽中發生變更。在非複製表中所有分割槽中的塊號形成一個序列,該列將包含一條記錄,該記錄具有通過mutation獲得的單個塊號。
- parts_to_do_names (Array(String)) — 資料部分的名稱陣列。
- parts_to_do (Int64) — 變更的數量。
- is_done (UInt8) — 是否完成的標誌。1 完成,0 未完成。
- latest_failed_part (String) — 無法改變的最新部分的名稱。
- latest_fail_time (Datetime) — 最近一次失敗的日期和時間。
- latest_fail_reason (String) — 導致最近失敗的異常訊息。
:) select * from parts limit 1\G Row 1: ────── partition: 202106 name: 202106_1_1766_852 uuid: 00000000-0000-0000-0000-000000000000 part_type: Compact active: 0 marks: 14 rows: 99120 bytes_on_disk: 186398 data_compressed_bytes: 185069 data_uncompressed_bytes: 2295607 marks_bytes: 1232 modification_time: 2021-06-24 19:33:58 remove_time: 2021-06-24 19:34:58 refcount: 1 min_date: 2021-06-23 max_date: 2021-06-24 min_time: 1970-01-01 08:00:00 max_time: 1970-01-01 08:00:00 partition_id: 202106 min_block_number: 1 max_block_number: 1766 level: 852 data_version: 1 primary_key_bytes_in_memory: 84 primary_key_bytes_in_memory_allocated: 8192 is_frozen: 0 database: system table: asynchronous_metric_log engine: MergeTree disk_name: default path: /ccdata/clickhouse/store/a9b/a9b7ecd5-a9fc-4710-a9b7-ecd5a9fc2710/202106_1_1766_852/ hash_of_all_files: 44309a6a6f7d6da0a45bf80625c9f223 hash_of_uncompressed_files: 2c9d1d988dfce85794ac644af9c982a7 uncompressed_hash_of_compressed_files: 207f50940df4a759f04cc1343750e7c5 delete_ttl_info_min: 1970-01-01 08:00:00 delete_ttl_info_max: 1970-01-01 08:00:00 move_ttl_info.expression: [] move_ttl_info.min: [] move_ttl_info.max: [] default_compression_codec: LZ4 recompression_ttl_info.expression: [] recompression_ttl_info.min: [] recompression_ttl_info.max: [] group_by_ttl_info.expression: [] group_by_ttl_info.min: [] group_by_ttl_info.max: [] rows_where_ttl_info.expression: [] rows_where_ttl_info.min: [] rows_where_ttl_info.max: []
- partition (String) – 分割槽名稱。要了解分割槽是什麼,請參閱 ALTER 查詢的說明。
- name (String) – 資料部分的名稱。
- part_type (String) — 資料部分儲存格式。資料儲存格式由 MergeTree 表的 min_bytes_for_wide_part 和 min_rows_for_wide_part 控制。
- active (UInt8) – 指示資料部分是否處於活動狀態的標誌。如果資料部分處於活動狀態,則在表中使用它。否則,它被刪除。合併後仍保留非活動資料部分。
- marks (UInt64) – 標記數。要獲得資料部分中的大致行數:標記數乘以索引粒度(通常為 8192)。
- rows (UInt64) – 行數。
- bytes_on_disk (UInt64) – 資料總大小(以位元組為單位)。
- data_compressed_bytes (UInt64) – 資料部分中壓縮資料的總大小。不包括所有輔助檔案(例如,帶有標記的檔案)。
- data_uncompressed_bytes (UInt64) – 資料部分中未壓縮資料的總大小。不包括所有輔助檔案(例如,帶有標記的檔案)。
- marks_bytes (UInt64) – 帶有標記的檔案的大小。
- modify_time (DateTime) – 包含資料部分的目錄被修改的時間。這通常對應於資料部分建立的時間。
- remove_time (DateTime) – 資料部分變為非活動狀態的時間。
- refcount (UInt32) – 使用資料部分的位置數。大於 2 的值表示資料部分用於查詢或合併。
- min_date (Date) – 資料部分中日期鍵的最小值。
- max_date (Date) – 資料部分中日期鍵的最大值。
- min_time (DateTime) – 資料部分中日期和時間鍵的最小值。
- max_time(DateTime) – 資料部分中日期和時間鍵的最大值。
- partition_id (String) – 分割槽的 ID。
- min_block_number (UInt64) – 合併後構成當前部分的最小資料部分數。
- max_block_number (UInt64) – 合併後構成當前部分的最大資料部分數。
- level (UInt32) – 合併樹的深度。0表示是通過插入而不是通過合併建立的。
- data_version (UInt64) – 用於確定應將哪些mutations應用於資料部分(版本高於 data_version 的突變)的數字。
- primary_key_bytes_in_memory (UInt64) – 主鍵值使用的記憶體量(以位元組為單位)。
- primary_key_bytes_in_memory_allocated (UInt64) – 為主鍵值保留的記憶體量(以位元組為單位)。
- is_frozen (UInt8) – 表明存在分割槽資料備份的標誌。 1、備份存在。 0,備份不存在。
- database (String) – 資料庫的名稱。
- table (String) – 表的名稱。
- engine (String) – 不帶引數的表引擎的名稱。
- path (String) – 包含資料部分檔案的資料夾的絕對路徑。
- disk (String) – 儲存資料部分的磁碟的名稱。
- hash_of_all_files (String) – sipHash128 的壓縮檔案。
- hash_of_uncompressed_files (String) – 未壓縮檔案的 sipHash128(帶有標記的檔案、索引檔案等)。
- uncompressed_hash_of_compressed_files(字串)——壓縮檔案中的 sipHash128 資料,就好像它們是未壓縮的一樣。
- delete_ttl_info_min (DateTime) — TTL DELETE 規則的日期和時間鍵的最小值。
- delete_ttl_info_max (DateTime) — TTL DELETE 規則的日期和時間鍵的最大值。
- move_ttl_info.expression (Array(String)) — 表示式陣列。每個表示式定義一個 TTL MOVE 規則。
- move_ttl_info.min (Array(DateTime)) — 日期和時間值陣列。每個元素都描述了 TTL MOVE 規則的最小鍵值。
- move_ttl_info.max (Array(DateTime)) — 日期和時間值陣列。每個元素都描述了 TTL MOVE 規則的最大鍵值。
- bytes (UInt64) – 資料總大小(以位元組為單位),bytes_on_disk 的別名。
- marks_size (UInt64) – 標記位元組的別名。
:) select * from parts_columns limit 1 FORMAT Vertical; Row 1: ────── partition: 202106 name: 202106_1_1781_867 uuid: 00000000-0000-0000-0000-000000000000 part_type: Compact active: 0 marks: 14 rows: 99960 bytes_on_disk: 187890 data_compressed_bytes: 186561 data_uncompressed_bytes: 2314927 marks_bytes: 1232 modification_time: 2021-06-24 19:48:58 remove_time: 2021-06-24 19:49:58 refcount: 1 min_date: 2021-06-23 max_date: 2021-06-24 min_time: 1970-01-01 08:00:00 max_time: 1970-01-01 08:00:00 partition_id: 202106 min_block_number: 1 max_block_number: 1781 level: 867 data_version: 1 primary_key_bytes_in_memory: 84 primary_key_bytes_in_memory_allocated: 8192 database: system table: asynchronous_metric_log engine: MergeTree disk_name: default path: /ccdata/clickhouse/store/a9b/a9b7ecd5-a9fc-4710-a9b7-ecd5a9fc2710/202106_1_1781_867/ column: event_date type: Date column_position: 1 default_kind: default_expression: column_bytes_on_disk: 0 column_data_compressed_bytes: 0 column_data_uncompressed_bytes: 0 column_marks_bytes: 0
大部分和parts表一樣,多了列資訊:
- column (String) — 列名。
- type (String) — 列型別。
- column_position (UInt64) — 列在表中的位置,從 1 開始。
- default_kind (String) — 預設值的表示式型別(DEFAULT、MATERIALIZED、ALIAS),如果未定義則為空字串。
- default_expression (String) — 預設值的表示式,如果未定義則為空字串。
- column_bytes_on_disk (UInt64) — 列的總大小(以位元組為單位)。
- column_data_compressed_bytes (UInt64) — 列中壓縮資料的總大小,以位元組為單位。
- column_data_uncompressed_bytes (UInt64) — 列中解壓縮資料的總大小,以位元組為單位。
- column_marks_bytes (UInt64) — 帶有標記的列的大小,以位元組為單位。
:) select * from processes FORMAT Vertical; Row 1: ────── is_initial_query: 1 user: default query_id: bbb30c0e-90f4-48fc-8caa-5e8c064fd08f address: ::ffff:127.0.0.1 port: 55524 initial_user: default initial_query_id: bbb30c0e-90f4-48fc-8caa-5e8c064fd08f initial_address: ::ffff:127.0.0.1 initial_port: 55524 interface: 1 os_user: operadmin client_hostname: dba05 client_name: ClickHouse client_revision: 54448 client_version_major: 21 client_version_minor: 6 client_version_patch: 3 http_method: 0 http_user_agent: http_referer: forwarded_for: quota_key: elapsed: 0.000810712 is_cancelled: 0 read_rows: 0 read_bytes: 0 total_rows_approx: 0 written_rows: 0 written_bytes: 0 memory_usage: 0 peak_memory_usage: 0 query: select * from processes FORMAT Vertical; thread_ids: [31653] ProfileEvents.Names: ['Query','SelectQuery','ContextLock','RWLockAcquiredReadLocks'] ProfileEvents.Values: [1,1,12,1] Settings.Names: ['load_balancing','max_memory_usage'] Settings.Values: ['random','10000000000'] current_database: system
-
user (String) – 進行查詢的使用者。對於分散式處理,查詢將傳送到預設使用者下的遠端伺服器。該欄位包含特定查詢的使用者名稱,而不是該查詢發起的查詢的使用者名稱。
-
address (String) – 請求的 IP 地址。
-
elapsed (Float64) – 執行時間(以秒為單位)。
-
rows_read (UInt64) – 從表中讀取的行數。對於分散式處理,在請求者伺服器上,這是所有遠端伺服器的總數。
-
bytes_read (UInt64) – 從表中讀取的未壓縮位元組數。對於分散式處理,在請求者伺服器上,這是所有遠端伺服器的總數。
-
total_rows_approx (UInt64) – 應該讀取的總行數的近似值。對於分散式處理,在請求者伺服器上,這是所有遠端伺服器的總數。當要處理的新源已知時,它可以在請求處理期間更新。
-
memory_usage (UInt64) – 請求使用的 RAM 量。它可能不包括某些型別的專用記憶體。
-
query (String) – 查詢語句,對於INSERT,不包括要插入的資料。
-
query_id (String) – 查詢ID(如果已定義)。
1. 查詢執行成功,則會建立 QueryStart 和 QueryFinish 型別的事件。
2. 查詢期間發生錯誤,則會建立QueryStart 和 ExceptionWhileProcessing 型別的事件。
3. 查詢之前發生錯誤,則會建立一個具有 ExceptionBeforeStart 型別的事件。
:) select * from query_log limit 1 \G Row 1: ────── type: QueryStart event_date: 2021-06-23 event_time: 2021-06-23 13:51:36 event_time_microseconds: 2021-06-23 13:51:36.355724 query_start_time: 2021-06-23 13:51:36 query_start_time_microseconds: 2021-06-23 13:51:36.355724 query_duration_ms: 0 read_rows: 0 read_bytes: 0 written_rows: 0 written_bytes: 0 result_rows: 0 result_bytes: 0 memory_usage: 0 current_database: default query: SELECT DISTINCT arrayJoin(extractAll(name, '[\\w_]{2,}')) AS res FROM (SELECT name FROM system.functions UNION ALL SELECT name FROM system.table_engines UNION ALL SELECT name FROM system.formats UNION ALL SELECT name FROM system.table_functions UNION ALL SELECT name FROM system.data_type_families UNION ALL SELECT name FROM system.merge_tree_settings UNION ALL SELECT name FROM system.settings UNION ALL SELECT cluster FROM system.clusters UNION ALL SELECT macro FROM system.macros UNION ALL SELECT policy_name FROM system.storage_policies UNION ALL SELECT concat(func.name, comb.name) FROM system.functions AS func CROSS JOIN system.aggregate_function_combinators AS comb WHERE is_aggregate UNION ALL SELECT name FROM system.databases LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.tables LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.dictionaries LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.columns LIMIT 10000) WHERE notEmpty(res) normalized_query_hash: 6666026786019643712 query_kind: Select databases: ['system'] tables: ['system.aggregate_function_combinators','system.clusters','system.columns','system.data_type_families','system.databases','system.dictionaries','system.formats','system.functions','system.macros','system.merge_tree_settings','system.settings','system.storage_policies','system.table_engines','system.table_functions','system.tables'] columns: ['system.aggregate_function_combinators.name','system.clusters.cluster','system.columns.name','system.data_type_families.name','system.databases.name','system.dictionaries.name','system.formats.name','system.functions.is_aggregate','system.functions.name','system.macros.macro','system.merge_tree_settings.name','system.settings.name','system.storage_policies.policy_name','system.table_engines.name','system.table_functions.name','system.tables.name'] projections: [] exception_code: 0 exception: stack_trace: is_initial_query: 1 user: default query_id: 15872c48-aec7-4291-9b7c-42070bc76c88 address: ::ffff:127.0.0.1 port: 35356 initial_user: default initial_query_id: 15872c48-aec7-4291-9b7c-42070bc76c88 initial_address: ::ffff:127.0.0.1 initial_port: 35356 interface: 1 os_user: client_hostname: client_name: ClickHouse client client_revision: 54448 client_version_major: 21 client_version_minor: 6 client_version_patch: 0 http_method: 0 http_user_agent: http_referer: forwarded_for: quota_key: revision: 54451 log_comment: thread_ids: [] ProfileEvents.Names: [] ProfileEvents.Values: [] Settings.Names: ['load_balancing','max_memory_usage'] Settings.Values: ['random','10000000000'] used_aggregate_functions: [] used_aggregate_function_combinators: [] used_database_engines: [] used_data_type_families: [] used_dictionaries: [] used_formats: [] used_functions: [] used_storages: [] used_table_functions: []
-
type (Enum8) — 執行查詢時發生的事件型別:
'QueryStart' = 1 — 成功開始查詢執行。
'QueryFinish' = 2 — 查詢執行成功結束。
'ExceptionBeforeStart' = 3 — 查詢執行開始前的異常。
'ExceptionWhileProcessing' = 4 — 查詢執行期間的異常。 -
event_date (Date) — 查詢開始日期。
-
event_time (DateTime) — 查詢開始時間。
-
event_time_microseconds (DateTime) — 以微秒精度查詢開始時間。
-
query_start_time (DateTime) — 查詢執行的開始時間。
-
query_start_time_microseconds (DateTime64) — 以微秒精度開始執行查詢的時間。
-
query_duration_ms (UInt64) — 以毫秒為單位的查詢執行持續時間。
-
read_rows (UInt64) — 從參與查詢的所有表和表函式中讀取的總行數。它包括通常的子查詢、IN 和 JOIN 的子查詢。對於分散式查詢 read_rows 包括在所有副本讀取的總行數。每個副本傳送它的 read_rows 值,查詢的伺服器發起者彙總所有接收到的和本地的值。
-
read_bytes (UInt64) — 從參與查詢的所有表和表函式中讀取的總位元組數。它包括通常的子查詢、IN 和 JOIN 的子查詢。對於分散式查詢 read_bytes 包括在所有副本讀取的總行數。每個副本傳送它的 read_bytes 值,查詢的伺服器發起者彙總所有接收到的和本地的值。
-
write_rows (UInt64) — 對於 INSERT 查詢,寫入的行數。對於其他查詢,列值為 0。
-
write_bytes (UInt64) — 對於 INSERT 查詢,寫入的位元組數。對於其他查詢,列值為 0。
-
result_rows (UInt64) — SELECT 查詢結果中的行數,或 INSERT 查詢中的行數。
-
result_bytes (UInt64) — 用於儲存查詢結果的 RAM 容量(以位元組為單位)。
-
memory_usage (UInt64) — 查詢的記憶體消耗。
-
current_database (String) — 當前資料庫的名稱。
-
query (String) — 查詢語句。
-
normalized_query_hash (UInt64) — 雜湊值。
-
query_kind (LowCardinality(String)) — 查詢的型別。
-
database (Array(LowCardinality(String))) — 查詢中存在的資料庫的名稱。
-
tables (Array(LowCardinality(String))) — 查詢中存在的表的名稱。
-
columns (Array(LowCardinality(String))) — 查詢中存在的列的名稱。
-
exception_code (Int32) — 異常程式碼。
-
exception(字串)——異常訊息。
-
stack_trace (String) — 堆疊跟蹤。如果查詢成功完成,則為空字串。
-
is_initial_query (UInt8) — 查詢型別。可能的值:
1 — 查詢由客戶端發起。
0 — 作為分散式查詢執行的一部分,查詢由另一個查詢啟動。 -
user (String) — 發起當前查詢的使用者名稱。
-
query_id (String) — 查詢 ID。
-
address (IPv6) — 用於進行查詢的 IP 地址。
-
port (UInt16) — 用於進行查詢的客戶端埠。
-
initial_user (String) — 執行初始查詢的使用者名稱(用於分散式查詢執行)。
-
initial_query_id (String) — 初始查詢的 ID(用於分散式查詢執行)。
-
initial_address (IPv6) — 啟動父查詢的 IP 地址。
-
initial_port (UInt16) — 用於進行父查詢的客戶端埠。
-
interface (UInt8) — 發起查詢的介面。可能的值:
1 — TCP。
2 - HTTP。 -
os_user (String) — 執行 clickhouse-client 的作業系統使用者名稱。
-
client_hostname (String) — 執行 clickhouse-client 或其他 TCP 客戶端的客戶端機器的主機名。
-
client_name (String) — clickhouse-client 或其他 TCP 客戶端名稱。
-
client_revision (UInt32) — clickhouse-client 或另一個 TCP 客戶端的修訂版。
-
client_version_major (UInt32) — clickhouse-client 或其他 TCP 客戶端的主要版本。
-
client_version_minor (UInt32) — clickhouse-client 或其他 TCP 客戶端的次要版本。
-
client_version_patch (UInt32) — clickhouse-client 或其他 TCP 客戶端版本的補丁元件。
-
http_method (UInt8) — 發起查詢的 HTTP 方法。可能的值:
0 — 查詢是從 TCP 介面啟動的。
1 — 使用了 GET 方法。
2 — 使用了 POST 方法。 -
http_user_agent (String) — 在 HTTP 查詢中傳遞的 HTTP 標頭 UserAgent。
-
http_referer (String) — 在 HTTP 查詢中傳遞的 HTTP 標頭 Referer(包含進行查詢的頁面的絕對或部分地址)。
-
forwarded_for (String) — 在 HTTP 查詢中傳遞的 HTTP 標頭 X-Forwarded-For。
-
quota_key (String) — 在配額設定中指定的配額鍵(見 keyed)。
-
revision (UInt32) — ClickHouse 修訂版。
-
log_comment (String) — 記錄備註。它可以設定為不超過 max_query_size 的任意字串。如果未定義,則為空字串。
-
thread_ids (Array(UInt64)) — 參與查詢執行的執行緒 ID。
-
ProfileEvents.Names (Array(String)) — 衡量不同指標的計數器。它們的描述可以在表 system.events 中找到
-
ProfileEvents.Values (Array(UInt64)) — ProfileEvents.Names 列中列出的指標值。
-
Settings.Names (Array(String)) — 客戶端執行查詢時更改的設定名稱。要啟用對設定的日誌更改,請將 log_query_settings 引數設定為 1。
-
Settings.Values (Array(String)) — Settings.Names 列中列出的設定值。
-
used_aggregate_functions (Array(String)) — 在查詢執行期間使用的聚合函式的規範名稱。
-
used_aggregate_function_combinators (Array(String)) — 在查詢執行期間使用的聚合函式組合器的規範名稱。
-
used_database_engines (Array(String)) — 在查詢執行期間使用的資料庫引擎的規範名稱。
-
used_data_type_families (Array(String)) — 在查詢執行期間使用的資料型別系列的規範名稱。
-
used_dictionaries (Array(String)) — 字典的規範名稱,在查詢執行期間使用。
-
used_formats (Array(String)) — 格式的規範名稱,在查詢執行期間使用。
-
used_functions (Array(String)) — 在查詢執行期間使用的函式的規範名稱。
-
used_storages (Array(String)) — 儲存的規範名稱,在查詢執行期間使用。
-
used_table_functions (Array(String)) — 在查詢執行期間使用的表函式的規範名稱。
1. 配置log_query_threads引數
2. 設定log_query_threads=1
重新整理週期通過flush_interval_milliseconds 引數設定,使用 SYSTEM FLUSH LOGS 要強制重新整理。
:) select * from query_thread_log limit 1\G Row 1: ────── event_date: 2021-06-23 event_time: 2021-06-23 13:51:36 event_time_microseconds: 2021-06-23 13:51:36.369932 query_start_time: 2021-06-23 13:51:36 query_start_time_microseconds: 2021-06-23 13:51:36.366623 query_duration_ms: 3 read_rows: 1059 read_bytes: 35127 written_rows: 0 written_bytes: 0 memory_usage: 0 peak_memory_usage: 0 thread_name: QueryPipelineEx thread_id: 25324 master_thread_id: 25063 current_database: default query: SELECT DISTINCT arrayJoin(extractAll(name, '[\\w_]{2,}')) AS res FROM (SELECT name FROM system.functions UNION ALL SELECT name FROM system.table_engines UNION ALL SELECT name FROM system.formats UNION ALL SELECT name FROM system.table_functions UNION ALL SELECT name FROM system.data_type_families UNION ALL SELECT name FROM system.merge_tree_settings UNION ALL SELECT name FROM system.settings UNION ALL SELECT cluster FROM system.clusters UNION ALL SELECT macro FROM system.macros UNION ALL SELECT policy_name FROM system.storage_policies UNION ALL SELECT concat(func.name, comb.name) FROM system.functions AS func CROSS JOIN system.aggregate_function_combinators AS comb WHERE is_aggregate UNION ALL SELECT name FROM system.databases LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.tables LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.dictionaries LIMIT 10000 UNION ALL SELECT DISTINCT name FROM system.columns LIMIT 10000) WHERE notEmpty(res) normalized_query_hash: 6666026786019643712 is_initial_query: 1 user: default query_id: 15872c48-aec7-4291-9b7c-42070bc76c88 address: ::ffff:127.0.0.1 port: 35356 initial_user: default initial_query_id: 15872c48-aec7-4291-9b7c-42070bc76c88 initial_address: ::ffff:127.0.0.1 initial_port: 35356 interface: 1 os_user: client_hostname: client_name: ClickHouse client client_revision: 54448 client_version_major: 21 client_version_minor: 6 client_version_patch: 0 http_method: 0 http_user_agent: http_referer: forwarded_for: quota_key: revision: 54451 ProfileEvents.Names: ['ArenaAllocChunks','ArenaAllocBytes','FunctionExecute','SelectedRows','SelectedBytes','ContextLock','RWLockAcquiredReadLocks','RWLockReadersWaitMilliseconds','RealTimeMicroseconds','UserTimeMicroseconds','SoftPageFaults','OSCPUWaitMicroseconds','OSCPUVirtualTimeMicroseconds'] ProfileEvents.Values: [2,24576,6,1059,35127,4,65,1,3280,1616,45,14,1616]
-
event_date (Date) — 執行緒完成查詢執行的日期。
-
event_time (DateTime) — 執行緒完成查詢執行的日期和時間。
-
event_time_microsecinds (DateTime) — 執行緒以微秒精度完成查詢執行的日期和時間。
-
query_start_time (DateTime) — 查詢執行的開始時間。
-
query_start_time_microseconds (DateTime64) — 以微秒精度開始執行查詢的時間。
-
query_duration_ms (UInt64) — 查詢執行的持續時間。
-
read_rows (UInt64) — 讀取的行數。
-
read_bytes (UInt64) — 讀取位元組數。
-
write_rows (UInt64) — 對於 INSERT 查詢,寫入的行數。對於其他查詢,列值為 0。
-
write_bytes (UInt64) — 對於 INSERT 查詢,寫入的位元組數。對於其他查詢,列值為 0。
-
memory_usage (Int64) — 此執行緒上下文中已分配和已釋放記憶體量之間的差異。
-
peak_memory_usage (Int64) — 此執行緒上下文中已分配和已釋放記憶體量之間的最大差異。
-
thread_name (String) — 執行緒的名稱。
-
thread_number (UInt32) — 內部執行緒 ID。
-
thread_id (Int32) — 執行緒 ID。
-
master_thread_id (UInt64) — 初始執行緒的作業系統初始 ID。
-
query (String) — 查詢語句。
-
is_initial_query (UInt8) — 查詢型別。可能的值:
1 — 查詢由客戶端發起。
0 — 查詢是由另一個用於分散式查詢執行的查詢啟動的。 -
user (String) — 發起當前查詢的使用者名稱。
-
query_id (String) — 查詢的 ID。
-
address (IPv6) — 用於進行查詢的 IP 地址。
-
port (UInt16) — 用於進行查詢的客戶端埠。
-
initial_user (String) — 執行初始查詢的使用者名稱(用於分散式查詢執行)。
-
initial_query_id (String) — 初始查詢的 ID(用於分散式查詢執行)。
-
initial_address (IPv6) — 啟動父查詢的 IP 地址。
-
initial_port (UInt16) — 用於進行父查詢的客戶端埠。
-
interface (UInt8) — 發起查詢的介面。可能的值:
1 — TCP。
2 - HTTP。 -
os_user (String) — 執行 clickhouse-client 的作業系統使用者名稱。
-
client_hostname (String) — 執行 clickhouse-client 或其他 TCP 客戶端的客戶端機器的主機名。
-
client_name (String) — clickhouse-client 或其他 TCP 客戶端名稱。
-
client_revision (UInt32) — clickhouse-client 或另一個 TCP 客戶端的修訂版。
-
client_version_major (UInt32) — clickhouse-client 或其他 TCP 客戶端的主要版本。
-
client_version_minor (UInt32) — clickhouse-client 或其他 TCP 客戶端的次要版本。
-
client_version_patch (UInt32) — clickhouse-client 或其他 TCP 客戶端版本的補丁元件。
-
http_method (UInt8) — 發起查詢的 HTTP 方法。可能的值:
0 — 查詢是從 TCP 介面啟動的。
1 — 使用了 GET 方法。
2 — 使用了 POST 方法。 -
http_user_agent (String) — HTTP 請求中傳遞的 UserAgent 標頭。
-
quota_key (String) — 在配額設定中指定的“配額鍵”(參見 keyed)。
-
修訂版 (UInt32) — ClickHouse 修訂版。
-
ProfileEvents.Names (Array(String)) — 衡量該執行緒不同指標的計數器。它們的描述可以在表 system.events 中找到。
- ProfileEvents.Values (Array(UInt64)) — ProfileEvents.Names 列中列出的此執行緒的指標值。
:) select * from quota_limits; ...
-
quota_name (String) — 配額名稱。
-
duration (UInt32) — 計算資源消耗的時間間隔長度,以秒為單位。
-
is_randomized_interval (UInt8) — 邏輯值。它顯示間隔是否是隨機的。如果間隔不是隨機的,則它總是同時開始。例如,1 分鐘的間隔總是從整數分鐘開始(即它可以從 11:20:00 開始,但它永遠不會從 11:20:01 開始),一天的間隔總是從 UTC 午夜開始.如果間隔是隨機的,則第一個間隔在隨機時間開始,隨後的間隔一個接一個開始。價值觀:
0 — 間隔不是隨機的。
1 — 間隔是隨機的。 -
max_queries (Nullable(UInt64)) - 最大查詢數。
-
max_query_selects (Nullable(UInt64)) — select最大數量。
-
max_query_inserts (Nullable(UInt64)) — insert最大數量。
-
max_errors (Nullable(UInt64)) — 最大錯誤數。
-
max_result_rows (Nullable(UInt64)) — 結果行的最大數量。
-
max_result_bytes (Nullable(UInt64)) — 用於儲存查詢結果的最大 RAM 卷數(以位元組為單位)。
-
max_read_rows (Nullable(UInt64)) — 從參與查詢的所有表和表函式讀取的最大行數。
-
max_read_bytes (Nullable(UInt64)) — 從參與查詢的所有表和表函式讀取的最大位元組數。
-
max_execution_time (Nullable(Float64)) — 查詢執行時間的最大值,以秒為單位。
:) select * from quota_usage; ...
-
quota_name (String) — 配額名稱。
-
quota_key(String) — 鍵值。例如,如果keys = [ip address],那麼quota_key 的值可能是“192.168.1.1”。
-
start_time(Nullable(DateTime)) — 計算資源消耗的開始時間。
-
end_time(Nullable(DateTime)) — 計算資源消耗的結束時間。
-
duration (Nullable(UInt64)) 計算資源消耗的時間間隔長度,以秒為單位。
-
queries (Nullable(UInt64)) — 此時間間隔內的請求總數。
-
query_selects (Nullable(UInt64)) — 此時間間隔內選擇請求的總數。
-
query_inserts (Nullable(UInt64)) — 此時間間隔內插入請求的總數。
-
max_queries (Nullable(UInt64)) 最大請求數。
-
errors (Nullable(UInt64)) — 引發異常的查詢數。
-
max_errors (Nullable(UInt64)) — 最大錯誤數。
-
result_rows (Nullable(UInt64)) — 結果給出的總行數。
-
max_result_rows (Nullable(UInt64)) — 結果行的最大數量。
-
result_bytes (Nullable(UInt64)) — 用於儲存查詢結果的 RAM 容量(以位元組為單位)。
-
max_result_bytes (Nullable(UInt64)) — 用於儲存查詢結果的最大 RAM 容量,以位元組為單位。
-
read_rows (Nullable(UInt64)) — 從表中讀取的源行總數,用於在所有遠端伺服器上執行查詢。
-
max_read_rows (Nullable(UInt64)) — 從參與查詢的所有表和表函式讀取的最大行數。
-
read_bytes (Nullable(UInt64)) — 從參與查詢的所有表和表函式讀取的總位元組數。
-
max_read_bytes (Nullable(UInt64)) — 從所有表和表函式讀取的最大位元組數。
-
execution_time (Nullable(Float64)) — 總查詢執行時間,以秒為單位(掛牆時間)。
-
max_execution_time (Nullable(Float64)) — 查詢執行時間的最大值。
:) select * from quotas; ...
-
name (String) — 配額名稱。
-
id (UUID) — 配額 ID。
-
storage(String) — 配額的儲存。可能的值:“users.xml”(如果是在 users.xml 檔案中配置的配額),“disk”(如果是由 SQL 查詢配置的配額)。
-
keys (Array(Enum8)) — Key 指定配額的共享方式。如果兩個連線使用相同的配額和金鑰,則它們共享相同數量的資源:
[] — 所有使用者共享相同的配額。
['user_name'] — 具有相同使用者名稱的連線共享相同的配額。
['ip_address'] — 來自同一 IP 的連線共享相同的配額。
['client_key'] — 具有相同金鑰的連線共享相同的配額。金鑰必須由客戶端明確提供。使用clickhouse-client時,在--quota-key引數中傳遞一個key值,或者在客戶端配置檔案中使用quota_key引數。使用 HTTP 介面時,請使用 X-ClickHouse-Quota 標頭。
['user_name', 'client_key'] — 具有相同 client_key 的連線共享相同的配額。如果客戶端未提供金鑰,則會跟蹤 user_name 的 qouta。
['client_key', 'ip_address'] — 具有相同 client_key 的連線共享相同的配額。如果客戶端未提供金鑰,則會跟蹤 ip_address 的 qouta。 -
durations (Array(UInt64)) — 以秒為單位的時間間隔長度。
-
apply_to_all (UInt8) — 邏輯值。它顯示配額應用於哪些使用者。價值觀:
0 — 配額適用於在 apply_to_list 中指定的使用者。
1 — 配額適用於除 apply_to_except 中列出的使用者之外的所有使用者。 -
apply_to_list (Array(String)) — 應應用配額的使用者名稱/角色列表。
-
apply_to_except (Array(String)) — 配額不應適用的使用者名稱/角色列表。
:) select * from quotas_usage; ...
-
quota_name (String) — 配額名稱。
-
quota_key (String) — 鍵值。
-
is_current (UInt8) — 當前使用者的配額使用情況。
-
start_time (Nullable(DateTime))) — 計算資源消耗的開始時間。
-
end_time (Nullable(DateTime))) — 計算資源消耗的結束時間。
-
duration (Nullable(UInt32)) 計算資源消耗的時間間隔長度,以秒為單位。
-
queries (Nullable(UInt64)) — 此時間間隔內的請求總數。
-
max_queries (Nullable(UInt64)) 最大請求數。
-
query_selects (Nullable(UInt64)) — 此時間間隔內選擇請求的總數。
-
max_query_selects (Nullable(UInt64)) 選擇請求的最大數量。
-
query_inserts (Nullable(UInt64)) — 此時間間隔內插入請求的總數。
-
max_query_inserts (Nullable(UInt64)) — 插入請求的最大數量。
-
errors (Nullable(UInt64)) — 引發異常的查詢數。
-
max_errors (Nullable(UInt64)) — 最大錯誤數。
-
result_rows (Nullable(UInt64)) — 作為結果給出的總行數。
-
max_result_rows (Nullable(UInt64)) — 從表中讀取的最大源行數。
-
result_bytes (Nullable(UInt64)) — 用於儲存查詢結果的 RAM 容量(以位元組為單位)。
-
max_result_bytes (Nullable(UInt64)) — 用於儲存查詢結果的最大 RAM 容量,以位元組為單位。
-
read_rows (Nullable(UInt64))) — 從表中讀取的源行總數,用於在所有遠端伺服器上執行查詢。
-
max_read_rows (Nullable(UInt64)) — 從參與查詢的所有表和表函式讀取的最大行數。
-
read_bytes (Nullable(UInt64)) — 從參與查詢的所有表和表函式讀取的總位元組數。
-
max_read_bytes (Nullable(UInt64)) — 從所有表和表函式讀取的最大位元組數。
-
execution_time (Nullable(Float64)) — 總查詢執行時間,以秒為單位(掛牆時間)。
-
max_execution_time (Nullable(Float64)) — 查詢執行時間的最大值。
:) select * from replicas\G Row 1: ────── database: default table: ck_3shard_0repl engine: ReplicatedMergeTree is_leader: 1 can_become_leader: 1 is_readonly: 0 is_session_expired: 0 future_parts: 0 parts_to_check: 0 zookeeper_path: /clickhouse/tables/1/ck_3shard_0repl replica_name: dba05 replica_path: /clickhouse/tables/1/ck_3shard_0repl/replicas/dba05 columns_version: -1 queue_size: 0 inserts_in_queue: 0 merges_in_queue: 0 part_mutations_in_queue: 0 queue_oldest_time: 1970-01-01 08:00:00 inserts_oldest_time: 1970-01-01 08:00:00 merges_oldest_time: 1970-01-01 08:00:00 part_mutations_oldest_time: 1970-01-01 08:00:00 oldest_part_to_get: oldest_part_to_merge_to: oldest_part_to_mutate_to: log_max_index: 0 log_pointer: 0 last_queue_update: 1970-01-01 08:00:00 absolute_delay: 0 total_replicas: 1 active_replicas: 1 zookeeper_exception:
-
database(字串)- 資料庫名稱
-
table (String) - 表名
-
engine(字串) - 表引擎名稱
-
is_leader (UInt8) - 副本是否是領導者。
多個副本可以同時成為領導者。使用merge_tree 設定replicated_can_become_leader 可以防止副本成為領導者。領導者負責後臺合併。
注意,可以對任何可用的且在 ZK 中具有會話的副本執行寫入,無論它是否是領導者。 -
can_become_leader (UInt8) - 副本是否可以成為領導者。
-
is_readonly (UInt8) - 副本是否處於只讀模式。
如果配置中沒有包含 ZooKeeper 的部分,或則ZooKeeper異常,則會開啟此模式。 -
is_session_expired (UInt8) - 與 ZooKeeper 的會話已過期。與 is_readonly 基本相同。
-
future_parts (UInt32) - 作為尚未完成的 INSERT 或合併的結果出現的資料部分的數量。
-
parts_to_check (UInt32) - 佇列中用於驗證的資料分割槽的數量。如果分割槽已損壞,則將其放入驗證佇列。
-
zookeeper_path (String) - ZooKeeper 中表資料的路徑。
-
replica_name (String) - ZooKeeper 中的副本名稱。同一張表的不同副本有不同的名稱。
-
replica_path (String) - ZooKeeper 中副本資料的路徑。與連線 ‘zookeeper_path/replicas/replica_path’ 相同。
-
columns_version (Int32) - 表結構的版本號。表示執行了多少次 ALTER。如果副本有不同的版本,這意味著一些副本還沒有完成所有的 ALTER。
-
queue_size (UInt32) - 等待執行的操作的佇列大小。操作包括插入資料塊、合併和某些其他操作。它通常與 future_parts 重合。
-
inserts_in_queue (UInt32) - 需要插入的資料塊的數量。插入通常複製得相當快。如果這個數字很大,這意味著有問題。
-
merges_in_queue (UInt32) - 等待合併的數量。有時合併很長,所以這個值可能會在很長一段時間內大於零。
-
part_mutations_in_queue (UInt32) - 等待進行的mutation數量。
-
queue_oldest_time (DateTime) - 如果 queue_size 大於 0,則顯示最早的操作何時新增到佇列中。
-
inserts_oldest_time (DateTime) - 見 queue_oldest_time
-
merges_oldest_time (DateTime) - 見 queue_oldest_time
-
part_mutations_oldest_time (DateTime) - 見 queue_oldest_time
-
log_max_index (UInt64) - 一般活動日誌中的最大條目數。
-
log_pointer (UInt64) - 副本複製到其執行佇列的一般活動日誌中的最大條目數,加一。如果 log_pointer 比 log_max_index 小得多,則說明有問題。
-
last_queue_update (DateTime) - 上次更新佇列的時間。
-
absolute_delay (UInt64) - 當前副本有多大的延遲(以秒為單位)。
-
total_replicas (UInt8) - 此表的已知副本總數。
-
active_replicas (UInt8) - 在 ZooKeeper 中具有會話的該表的副本數量(副本的數量)。
-
database (String) — 資料庫的名稱。
-
table (String) — 表的名稱。
-
elapsed (Float64) — 顯示當前正在執行的後臺提取自開始以來經過的時間(以秒為單位)。
-
progress (Float64) — 已完成工作的百分比,從 0 到 1。
-
result_part_name (String) — 作為顯示當前正在執行的後臺提取的結果而形成的部分的名稱。
-
result_part_path (String) — 作為顯示當前正在執行的後臺提取的結果而形成的部分的絕對路徑。
-
partition_id (String) — 分割槽的 ID。
-
total_size_bytes_compressed (UInt64) — 結果部分中壓縮資料的總大小(以位元組為單位)。
-
bytes_read_compressed (UInt64) — 從結果部分讀取的壓縮位元組數。
-
source_replica_path (String) — 源副本的絕對路徑。
-
source_replica_hostname (String) — 源副本的主機名。
-
source_replica_port (UInt16) — 源副本的埠號。
-
interserver_scheme (String) — 伺服器間方案的名稱。
-
URI (String) — 統一資源識別符號。
-
to_detached (UInt8) — 該標誌指示是否正在使用 TO DETACHED 表示式執行當前正在執行的後臺提取。
-
thread_id (UInt64) — 執行緒識別符號。
-
database (String) — 資料庫的名稱。
-
table (String) — 表的名稱。
-
replica_name (String) — ZooKeeper 中的副本名稱。同一張表的不同副本有不同的名稱。
-
position (UInt32) — 任務在佇列中的位置。
-
node_name (String) — ZooKeeper 中的節點名稱。
-
type (String) — 佇列中任務的型別,以下之一:
GET_PART — 從另一個副本中獲取零件。
ATTACH_PART — 附加分割槽,可能來自我們自己的副本(如果在分離的資料夾中找到)。
MERGE_PARTS — 合併分割槽。
DROP_RANGE — 刪除指定分割槽中指定編號範圍內的部分。
CLEAR_COLUMN — 已棄用。從指定分割槽刪除特定列。
CLEAR_INDEX — 已棄用。從指定分割槽刪除特定索引。
REPLACE_RANGE — 刪除一定範圍的分割槽並用新分割槽替換。
MUTATE_PART — 對分割槽應用一個或多個mutation。
ALTER_METADATA — 根據全域性 /metadata 和 /columns 路徑應用更改修改。 -
create_time (Datetime) — 提交任務執行的日期和時間。
-
required_quorum (UInt32) — 等待任務完成並確認完成的副本數。此列僅與 GET_PARTS 任務相關。
-
source_replica (String) — 源副本的名稱。
-
new_part_name (String) — 新部件的名稱。
-
parts_to_merge (Array (String)) — 要合併或更新的分割槽的名稱。
-
is_detach (UInt8) — 該標誌指示 DETACH_PARTS 任務是否在佇列中。
-
is_currently_executing (UInt8) — 該標誌指示當前是否正在執行特定任務。
-
num_tries (UInt32) — 完成任務的失敗嘗試次數。
-
last_exception (String) — 關於發生的最後一個錯誤(如果有)的文字訊息。
-
last_attempt_time (Datetime) — 上次嘗試任務的日期和時間。
-
num_postponed (UInt32) — 推遲任務的數量。
-
postpone_reason (String) —任務被推遲的原因。
-
last_postpone_time (Datetime) — 上次推遲任務的日期和時間。
-
merge_type (String) — 當前合併的型別。如果是mutation則為空。
:) select * from role_grants; ...
-
user_name (Nullable(String)) — 使用者名稱。
-
role_name (Nullable(String)) — 角色名稱。
-
grant_role_name (String) — 授予 role_name 角色的角色名稱。 要將一個角色授予另一個角色,請使用 GRANT role1 TO role2。
-
grant_role_is_default (UInt8) — 顯示 grant_role 是否為預設角色的標誌。 可能的值:
1 — grant_role 是預設角色。
0 — grant_role 不是預設角色。 -
with_admin_option (UInt8) — 顯示 grant_role 是否是具有 ADMIN OPTION 許可權的角色的標誌。 可能的值:
1 — 該角色具有 ADMIN OPTION 許可權。
0 — 沒有 ADMIN OPTION 許可權的角色。
-
name (String) — 角色名稱。
-
id (UUID) — 角色 ID。
-
storage (String) — 角色儲存的路徑。 在 access_control_path 引數中配置。
-
name (String) — 行策略的名稱。
-
short_name (String) — 行策略的簡稱。行策略的名稱是複合的,如:myfilter ON mydb.mytable。“myfilter ON mydb.mytable”是行策略的名稱,“myfilter”是它的簡稱。
-
database (String) ——資料庫名稱。
-
table (String) — 表名。
-
id (UUID) — 行策略 ID。
-
storage (String) — 儲存行策略的目錄的名稱。
-
select_filter (Nullable(String)) — 用於過濾行的條件。
-
is_restrictive (UInt8) — 顯示行策略是否限制對行的訪問,請參閱 CREATE ROW POLICY:
0 — 行策略是用 AS PERMISSIVE 子句定義的。
1 — 行策略是用 AS RESTRICTIVE 子句定義的。 -
apply_to_all (UInt8) — 顯示為所有角色和/或使用者設定的行策略。
-
apply_to_list (Array(String)) — 應用行策略的角色和/或使用者列表。
-
apply_to_except (Array(String)) — 行策略應用於除列出的角色和/或使用者之外的所有角色和/或使用者。
-
name (String) — 設定名稱。
-
value (String) — 設定值。
-
changed (UInt8) — 是否從其預設值更改。
-
description (String) — 設定描述。
-
min (Nullable(String)) — 設定的最小值,如果有的話是通過約束設定的。 如果設定沒有最小值,則包含 NULL。
-
max (Nullable(String)) — 設定的最大值,如果有的話是通過約束設定的。 如果設定沒有最大值,則包含 NULL。
-
readonly (UInt8) — 顯示當前使用者是否可以更改設定:
0 — 當前使用者可以更改設定。
1 — 當前使用者無法更改設定。
-
profile_name (Nullable(String)) — 配置檔名稱。
-
user_name (Nullable(String)) — 使用者名稱。
-
role_name (Nullable(String)) — 角色名稱。
-
index (UInt64) — 設定配置檔案元素的序列號。
-
setting_name (Nullable(String)) — 設定名稱。
-
value (Nullable(String)) — 設定值。
-
min (Nullable(String)) — 設定的最小值。 如果未設定,則為 NULL。
-
max (Nullable(String)) — 設定的最大值。 如果未設定,則為 NULL。
-
readonly (Nullable(UInt8)) — 僅允許讀取查詢的配置檔案。
-
inherit_profile (Nullable(String)) — 此設定配置檔案的父配置檔案,將從其父配置檔案繼承所有設定的值和約束(最小、最大、只讀)。如果未設定,則為 NULL。
-
name (String) — 設定配置檔名稱。
-
id (UUID) — 設定配置檔案 ID。
-
storage (String) — 設定配置檔案的儲存路徑。 在 access_control_path 引數中配置。
-
num_elements (UInt64) — system.settings_profile_elements 表中此配置檔案的元素數。
-
apply_to_all (UInt8) — 顯示為所有角色和/或使用者設定的設定配置檔案。
-
apply_to_list (Array(String)) — 應用設定配置檔案的角色和/或使用者的列表。
-
apply_to_except (Array(String)) — 設定配置檔案應用於除列出的角色和/或使用者之外的所有角色和/或使用者。
-
thread_name (String) — 執行緒名稱。
-
thread_id (UInt64) — 執行緒識別符號。
-
query_id (String) — 查詢識別符號,可用於獲取有關從 query_log 系統表執行的查詢的詳細資訊。
-
trace (Array(UInt64)) — 堆疊跟蹤,表示儲存呼叫方法的實體地址列表。
-
policy_name (String) — 儲存策略的名稱。
-
volume_name (String) — 儲存策略中定義的卷名。
-
volume_priority (UInt64) — 配置中的卷順序號。
-
disks (Array(String)) — 磁碟名稱,在儲存策略中定義。
-
max_data_part_size (UInt64) — 可儲存在卷磁碟上的資料部分的最大大小(0 — 無限制)。
-
move_factor (Float64) — 可用磁碟空間的比率。當比率超過配置引數的值時,ClickHouse 開始將資料按順序移動到下一個卷。
-
prefer_not_to_merge (UInt8) — preferred_not_to_merge 設定的值。啟用此設定後,不允許合併此捲上的資料。這允許控制 ClickHouse 如何處理慢速磁碟。
如果儲存策略包含多個卷,則每個卷的資訊都儲存在表的單獨行中。
:) select * from table_engines where name ='ReplicatedMergeTree' FORMAT Vertical; Row 1: ────── name: ReplicatedMergeTree supports_settings: 1 supports_skipping_indices: 1 supports_projections: 1 supports_sort_order: 1 supports_ttl: 1 supports_replication: 1 supports_deduplication: 1 supports_parallel_insert: 1
-
name (String) — 表引擎的名稱。
-
support_settings (UInt8) — 指示表引擎是否支援 SETTINGS 子句的標誌。
-
support_skipping_indices (UInt8) — 指示表引擎是否支援跳過索引的標誌。
-
support_ttl (UInt8) — 指示表引擎是否支援 TTL 的標誌。
-
support_sort_order (UInt8) — 指示表引擎是否支援子句 PARTITION_BY、PRIMARY_KEY、ORDER_BY 和 SAMPLE_BY 的標誌。
-
support_replication (UInt8) — 指示表引擎是否支援資料複製的標誌。
-
support_duduplication (UInt8) — 指示表引擎是否支援重複資料刪除的標誌。
-
support_parallel_insert (UInt8) — 指示表引擎是否支援並行插入的標誌(請參閱 max_insert_threads 設定)。
select ... from mysql(); select ... from remote(); ...
:) select * from tables where name ='ck_3shard_0repl' FORMAT Vertical; Row 1: ────── database: default name: ck_3shard_0repl uuid: 79de44ac-d101-48fe-b9de-44acd10118fe engine: ReplicatedMergeTree is_temporary: 0 data_paths: ['/ccdata/clickhouse/store/79d/79de44ac-d101-48fe-b9de-44acd10118fe/'] metadata_path: /ccdata/clickhouse/store/f16/f166c36c-b553-4f44-b166-c36cb5535f44/ck_3shard_0repl.sql metadata_modification_time: 2021-06-23 14:09:44 dependencies_database: [] dependencies_table: [] create_table_query: CREATE TABLE default.ck_3shard_0repl (`id` String, `price` Float64, `create_time` DateTime) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/ck_3shard_0repl', '{replica}') PARTITION BY toYYYYMM(create_time) ORDER BY id SETTINGS index_granularity = 8192 engine_full: ReplicatedMergeTree('/clickhouse/tables/{shard}/ck_3shard_0repl', '{replica}') PARTITION BY toYYYYMM(create_time) ORDER BY id SETTINGS index_granularity = 8192 partition_key: toYYYYMM(create_time) sorting_key: id primary_key: id sampling_key: storage_policy: default total_rows: 0 total_bytes: 0 lifetime_rows: ᴺᵁᴸᴸ lifetime_bytes: ᴺᵁᴸᴸ comment:
-
database (String) — 表所在的資料庫的名稱。
-
name (String) — 表名。
-
engine (String) — 表引擎名稱(不帶引數)。
-
is_temporary (UInt8) - 指示表是否為臨時表的標誌。
-
data_path (String) - 檔案系統中表資料的路徑。
-
metadata_path (String) - 檔案系統中表後設資料的路徑。
-
metadata_modification_time (DateTime) - 表後設資料的最新修改時間。
-
dependencies_database (Array(String)) - 資料庫依賴項。
-
dependencies_table (Array(String)) - 表依賴項(基於當前表的 MaterializedView 表)。
-
create_table_query (String) - 用於建立表的查詢。
-
engine_full (String) - 表引擎的引數。
-
partition_key (String) - 表中指定的分割槽鍵表示式。
-
sort_key (String) - 表中指定的排序鍵表示式。
-
primary_key (String) - 表中指定的主鍵表示式。
-
sample_key (String) - 表中指定的取樣鍵表示式。
-
storage_policy (String) - 儲存策略:
MergeTree
Distributed -
total_rows (Nullable(UInt64)) - 總行數,如果可以快速確定表中的確切行數,否則為 NULL(包括底層 Buffer 表)。
-
total_bytes (Nullable(UInt64)) - 總位元組數,如果可以快速確定儲存表的確切位元組數,否則為 NULL(不包括任何底層儲存)。
如果表將資料儲存在磁碟上,則返回磁碟上的已用空間(即壓縮空間)。
如果表將資料儲存在記憶體中,則返回記憶體中已用位元組的近似數量。 -
life_rows (Nullable(UInt64)) - 自伺服器啟動以來插入的總行數(僅適用於緩衝區表)。
-
life_bytes (Nullable(UInt64)) - 自伺服器啟動以來插入的總位元組數(僅適用於緩衝區表)。
-
comment (String) - 表的註釋。
-
event_date (Date) — 取樣的日期。
-
event_time (DateTime) — 取樣的時間戳。
-
event_time_microseconds (DateTime64) — 具有微秒精度的取樣時刻的時間戳。
-
timestamp_ns (UInt64) — 以納秒為單位的取樣時刻的時間戳。
-
revision (UInt32) — ClickHouse 伺服器構建修訂版。
-
trace_type (Enum8) — 跟蹤型別:
Real 表示按掛鐘時間收集堆疊跟蹤。
CPU 表示按 CPU 時間收集堆疊跟蹤。
當記憶體分配超過後續水印時,記憶體表示收集分配和解除分配。
MemorySample 表示收集隨機分配和解除分配。 -
thread_number (UInt32) — 執行緒識別符號。
-
query_id (String) — 查詢識別符號,可用於獲取有關從 query_log 系統表執行的查詢的詳細資訊。
-
trace (Array(UInt64)) — 取樣時的堆疊跟蹤。每個元素都是 ClickHouse 伺服器程式內的一個虛擬記憶體地址。
:) select * from user_directories; ┌─name────────────┬─type────────────┬─params─────────────────────────────────────────┬─precedence─┐ │ users.xml │ users.xml │ {"path":"\/etc\/clickhouse-server\/users.xml"} │ 1 │ │ local directory │ local directory │ {"path":"\/ccdata\/clickhouse\/access\/"} │ 2 │ └─────────────────┴─────────────────┴────────────────────────────────────────────────┴────────────┘
:) select * from users\G Row 1: ────── name: default id: 94309d50-4f52-5250-31bd-74fecac179db storage: users.xml auth_type: plaintext_password auth_params: {} host_ip: ['::/0'] host_names: [] host_names_regexp: [] host_names_like: [] default_roles_all: 1 default_roles_list: [] default_roles_except: [] grantees_any: 1 grantees_list: [] grantees_except: []
-
name (String) — 使用者名稱。
-
id (UUID) — 使用者 ID。
-
storage (String) — 使用者儲存的路徑。在 access_control_path 引數中配置。
-
auth_type (Enum8('no_password' = 0,'plaintext_password' = 1, 'sha256_password' = 2, 'double_sha1_password' = 3)) — 顯示身份驗證型別。對應著是:無密碼、明文密碼、SHA256編碼密碼、雙SHA-1編碼密碼。
-
auth_params (String) — JSON 格式的身份驗證引數,具體取決於 auth_type。
-
host_ip (Array(String)) — 允許連線到 ClickHouse 伺服器的主機的 IP 地址。
-
host_names (Array(String)) — 允許連線到 ClickHouse 伺服器的主機的名稱。
-
host_names_regexp (Array(String)) — 允許連線到 ClickHouse 伺服器的主機名的正規表示式。
-
host_names_like (Array(String)) — 允許連線到 ClickHouse 伺服器的主機的名稱,使用 LIKE 謂詞設定。
-
default_roles_all (UInt8) — 顯示預設情況下為使用者設定的所有授予的角色。
-
default_roles_list (Array(String)) — 預設提供的授權角色列表。
-
default_roles_except (Array(String)) — 除列出的角色外,所有授予的角色都設定為預設角色。
:) select * from zookeeper where path='/clickhouse'; ┌─name───────┬─value─┬─czxid─┬─mzxid─┬───────────────ctime─┬───────────────mtime─┬─version─┬─cversion─┬─aversion─┬─ephemeralOwner─┬─dataLength─┬─numChildren─┬─pzxid─┬─path────────┐ │ tables │ │ 21595 │ 21595 │ 2021-06-23 14:09:44 │ 2021-06-23 14:09:44 │ 0 │ 3 │ 0 │ 0 │ 0 │ 3 │ 21613 │ /clickhouse │ │ task_queue │ │ 21550 │ 21550 │ 2021-06-23 13:50:24 │ 2021-06-23 13:50:24 │ 0 │ 1 │ 0 │ 0 │ 0 │ 1 │ 21551 │ /clickhouse │ └────────────┴───────┴───────┴───────┴─────────────────────┴─────────────────────┴─────────┴──────────┴──────────┴────────────────┴────────────┴─────────────┴───────┴─────────────┘
-
name (String) — 節點的名稱。
-
path (String) — 節點的路徑。
-
value (String) — 節點值。
-
dataLength (Int32) — 值的大小。
-
numChildren (Int32) — 後代數量。
-
czxid (Int64) — 建立節點的交易的 ID。
-
mzxid (Int64) — 最後更改節點的事務的 ID。
-
pzxid (Int64) — 最後刪除或新增後代的事務的 ID。
-
ctime (DateTime) — 節點建立時間。
-
mtime (DateTime) — 上次修改節點的時間。
-
version (Int32) — 節點版本:節點更改的次數。
-
cversion (Int32) — 新增或刪除的後代數量。
-
aversion (Int32) — ACL 的更改次數。
-
ephemeralOwner (Int64) — 對於臨時節點,擁有此節點的會話的 ID。
總結
系統表提供了伺服器的狀態、程式以及環境,可以通過系統表獲取到伺服器的各種資訊,關於user的相關的表,需要開啟引數 access_management 來授權使用。
參考文章: