ClickHouse 的系統表


楔子

我們知道 ClickHouse 自帶兩個庫,分別是 default 和 system,default 是默認的數據庫,我們創建表的時候如果不指定庫名,那么默認會在 default 下創建。而 system 則是系統庫,里面存放了大量與系統相關的表,通過這些系統表我們可以查看服務器的所有狀態信息。

use system;
show tables;

總共有 69 個系統表,通過這些系統表,我們可以牢牢把控 ClickHouse 服務端的運行狀態。下面來看看就來挑幾個介紹一下。

system.asynchronous_metrics

ClickHouse 在后台會定期對一些指標進行計算,得到內存的使用量,該表負責存儲相關指標以及對應的值。

字段:

  • metric:指標名,String 類型
  • value:指標值,Float64 類型

 

system.asynchronous_metric_log

和 system.asynchronous_metric 作用相同,但是多了一些時間字段。

字段:

  • event_date:日期,Date 類型
  • event_time:時間,DateTime 類型
  • event_time_microseconds:帶毫秒的時間,DateTime64 類型
  • name:指標名,String 類型
  • value:指標值,Float64 類型

 

system.clusters

老熟人了這個,負責存儲配置文件中的可用集群信息。

字段:

  • cluster:集群名稱,String 類型
  • shard_num:集群中的第幾個分片,從 1 開始,UInt32 類型
  • shard_weight:分片的權重,UInt32 類型
  • replica_num:一個分片中的第幾個副本,從 1 開始,UInt32 類型
  • host_name:副本所在節點的主機名,String 類型
  • host_address:副本所在節點的 IP 地址,String 類型
  • port:副本所在節點的端口,UInt16 類型
  • is_local:是否為本地節點(和當前執行 SELECT ... FROM syst.clusters 的節點是否是同一個節點),UInt8 類型
  • user:連接至服務端的用戶,String 類型
  • default_database:默認數據庫,String 類型
  • errors_count:該節點連接副本失敗的次數,UInt32 類型
  • slowdowns_count:當使用對沖請求建立連接時,導致更改副本變慢的次數,UInt32 類型
  • estimated_recovery_time:距離副本錯誤歸零並被認為恢復正常還剩多少秒,UInt32 類型

 

system.columns

非常常用的一張表,負責存儲表的字段信息。

字段:

  • database:數據庫名,String 類型
  • table:表名,String 類型
  • name:字段名,String 類型
  • type:字段的類型,String 類型
  • position:字段在表中位於第幾列,UInt64 類型
  • default_kind:默認值表達式類型,如 DEFAULT、MATERIALIZED、ALIAS,如果沒有定義則為空字符串,String 類型
  • 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:該列是否在 sampling key 表達式中,UInt8 類型
  • compression_codec:壓縮器的名稱,String 類型

 

system.crash_log

負責記錄發生致命錯誤時的堆棧跟蹤信息,默認情況下 system 庫中不存在該表,只有在發生致命錯誤時該表才會創建。

字段:

  • event_date:錯誤發生日期,Date 類型
  • event_time:錯誤發生時間,DateTime 類型
  • timestamp_ns:錯誤發生時的時間戳,UInt64 類型
  • signal:信號值,Int32 類型
  • thread_id:錯誤發生時的線程 ID,UInt64 類型
  • query_id:錯誤發生時的查詢 ID,也就是執行哪個查詢發生了致命錯誤,String 類型
  • trace:崩潰時的堆棧跟蹤,每個元素都是 ClickHouse 服務進程中的虛擬內存地址,Array(UInt64) 類型
  • trace_full:崩潰時的堆棧跟蹤,每個元素在 ClickHouse 服務進程中都包含一個被調用的方法,Array(String) 類型
  • version:ClickHouse 服務器版本,String 類型
  • reversion:ClickHouse 服務器版本,UInt32 類型
  • build_id:編譯器生成的 BuildID,String 類型

 

system.data_skipping_indices

負責記錄所有表中已存在的跳數索引(二級索引)

字段:

  • database:數據庫名,String 類型
  • table:表名,String 類型
  • name:索引名,String 類型
  • type:索引類型,String 類型
  • expr:索引計算的表達式,String 類型
  • granularity:索引粒度,UInt64 類型

 

system.databases

負責記錄已存在的數據庫的信息(當然用戶可以看到的數據庫)

字段:

  • name:數據庫名稱,String 類型
  • engine:定義數據庫時所使用的引擎,String 類型
  • data_path:該數據庫下數據表的物理存儲路徑,String 類型
  • metadata_path:數據表的元數據的存儲路徑,String 類型
  • uuid:數據庫對應的 UUID,每個數據庫在創建的時候都會有一個 UUID,UUID 類型

 

system.disks

負責記錄配置文件中定義的磁盤信息

字段:

  • name:磁盤名稱,String 類型
  • path:在物理文件系統中的掛載點,String 類型
  • free_space:磁盤的可用空間,UInt64 類型
  • total_space:磁盤的可用空間,UInt64 類型
  • keep_free_space:磁盤應保留的空閑可用空間,通過 keep_free_space_bytes 標簽定義,UInt64 類型

 

system.distributed_ddl_queue

負責記錄執行過的分布式 DDL 查詢

字段:

  • entry:query id,String 類型
  • host_name:執行分布式 DDL 查詢的節點的主機名,String 類型
  • host_address:執行分布式 DDL 查詢的節點的 IP 地址,String 類型
  • port:執行分布式 DDL 查詢的節點監聽的端口,UInt16 類型
  • status:查詢的執行狀態,Enum8 類型
  • cluster:集群名稱,String 類型
  • query:執行的 query,String 類型
  • initiator:執行查詢的節點,String 類型
  • query_start_time:查詢開始時間,DateTime 類型
  • query_finish_time:查詢結束時間,DateTime 類型
  • query_duration_ms:查詢執行所花費的時間(毫秒),UInt64 類型
  • exception_code:來自 ZooKeeper 的異常碼,Enum8 類型

 

system.tables

負責記錄已存在的所有表的元數據信息

字段:

  • database:數據庫名,String 類型
  • name:表名,String 類型
  • uuid:創建表時生成的 UUID,UUID 類型
  • engine:表使用的引擎,String 類型
  • is_temporary:是否是臨時表,UInt8 類型
  • data_paths:表數據在文件系統中的物理路徑,string 類型
  • metadata_path:表元數據在文件系統中的物理路徑,String 類型
  • metadata_modification_time:表元數據最近一次的修改時間,DateTime 類型
  • dependencies_database:數據庫依賴關系,Array(String) 類型
  • dependencies_table:表依賴關系,針對物化視圖,Array(String) 類型
  • create_table_query:創建該表時的 SQL 語句,String 類型
  • engine_full:表引擎的參數,String 類型
  • partition_key:分區鍵表達式,String 類型
  • sorting_key:排序鍵表達式,String 類型
  • primary_key:主鍵表達式,String 類型
  • sampling_key:sampling key 表達式,String 類型
  • storage_policy:存儲策略,String 類型
  • total_rows:數據表的總行數,Nullable(UInt64)
  • total_bytes:數據表的總大小。如果表存儲在磁盤上,返回使用磁盤空間(壓縮之后的);如果表存儲在內存中,返回使用的內存大小,單位字節,Nullable(UInt64) 類型
  • lifetime_rows:自服務啟動以來,插入的數據的總行數,僅適用於 Buffer 表,Nullable(UInt64) 類型
  • lifetime_bytes:自服務啟動以來,插入的數據所占的總字節數,僅適用於 Buffer 表,Nullable(UInt64) 類型
  • comment:表注釋

我們使用 show tables 等價於 SELECT * FROM system.tables WHERE database = 'xxx'。

小結

以上我們就介紹了一些系統表,當然 ClickHouse 中的系統表遠不止我們說的這些,更多內容可以前往官網查看,寫的還是比較詳細的。當然我們后面在說 ClickHouse 權限管理的時候,還會再介紹幾個系統表。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM