全部產品
Search
文件中心

Realtime Compute for Apache Flink:Paimon系統資料表

更新時間:Jul 13, 2024

Paimon系統資料表用於儲存Paimon表的中繼資料和特定的資料消費行為。本文為您介紹Paimon中繼資料系統資料表和特定消費行為的有關係統表作用,相關的欄位及含義等。

中繼資料系統資料表

Snapshots系統資料表

Snapshots系統資料表可以查詢每個快照檔案的具體資訊,例如快照檔案的編號,快照檔案的建立時間等。

以下SQL語句查詢mycat.mydb.mytbl的Snapshots系統資料表。

SELECT * FROM mycat.mydb.`mytbl$snapshots`;

Snapshots系統資料表常用的列如下。

列名

資料類型

含義

snapshot_id

Long

快照檔案的編號。

schema_id

Long

快照檔案對應的表結構檔案編號,表結構檔案的內容可在Schemas系統資料表中查看。

commit_time

Timestamp

快照檔案的建立時間。

total_record_count

Long

快照檔案指向的資料檔案中資料的總條數。

說明

資料檔案需要在記憶體中歸併之後才能產出真正的資料。因此total_record_count列的取值並不等於Paimon表邏輯上儲存的資料條數。

delta_record_count

Long

與上一個快照檔案相比,資料檔案中增加的資料條數。

changelog_record_count

Long

本次快照產出的變更資料條數。

Schemas系統資料表

Schemas系統資料表可以查詢表的當前以及歷史結構資訊。每次通過ALTER TABLE語句CREATE TABLE AS(CTAS)語句CREATE DATABASE AS(CDAS)語句修改Paimon表的結構時,都會在Schemas系統資料表中增加一條記錄。以下SQL語句查詢mycat.mydb.mytbl的Schemas系統資料表。

SELECT * FROM mycat.mydb.`mytbl$schemas`;

Schemas系統資料表常用的列如下。

列名

資料類型

含義

schema_id

Long

表結構的編號。

fields

String

每一列的名稱以及類型等。

partition_keys

String

分區列的名稱。

primary_keys

String

主鍵的名稱。

options

String

表參數的值。

comment

String

表的備忘資訊。

update_time

Timestamp

表結構修改的時間。

Options系統資料表

Options系統資料表可以查詢當前配置的表參數。

以下SQL語句查詢mycat.mydb.mytbl的Options系統資料表。

SELECT * FROM mycat.mydb.`mytbl$options`;

Options系統資料表常用的列如下。

列名

資料類型

含義

key

String

配置項的名稱。

value

String

配置項的值。

說明

未顯示的表參數將使用預設值。

Partitions系統資料表

Partitions系統資料表可以查詢Paimon表裡有哪些分區、每個分區的資料總數,以及檔案總量。

以下SQL語句查詢mycat.mydb.mytbl對應的Partitions系統資料表。

SELECT * FROM mycat.mydb.`mytbl$partitions`;

Partitions系統資料表常用的列如下。

列名

資料類型

含義

partition

String

分區值,格式為[分區值 1, 分區值 2, ...]

record_count

Long

分區內的資料條數。

說明

資料檔案還需要在記憶體中歸併之後才能產出真正的資料,因此record_count列的取值並不等於該分區邏輯上儲存的資料條數。

file_size_in_bytes

Long

分區內的檔案總大小,以位元組為單位。

未被當前快照檔案指向的歷史資料檔案不會被統計。

Files系統資料表

Files系統資料表可以查詢某個快照檔案指向的所有資料檔案,包括資料檔案的格式、檔案內的資料條數和檔案大小等。

以下SQL語句查詢mycat.mydb.mytbl最新快照對應的Files系統資料表。

SELECT * FROM mycat.mydb.`mytbl$files`;

以下SQL語句查詢mycat.mydb.mytbl編號為5的快照對應的Files系統資料表。

SELECT * FROM mycat.mydb.`mytbl$files` /*+ OPTIONS('scan.snapshot-id'='5') */;

Files系統資料表常用的列如下。

列名

資料類型

含義

partition

String

檔案所在的分區,格式為[分區值 1, 分區值 2, ...]

bucket

Integer

檔案所在的分桶,只對固定分桶的主鍵表有意義。

file_path

String

檔案路徑。

file_format

String

檔案格式。

schema_id

Long

快照檔案對應的表結構檔案編號,表結構檔案的內容可在Schemas系統資料表中查看。

level

Integer

檔案所在的LSM層級,只對主鍵表有意義。

level = 0的檔案就是未合并的小檔案。通過查詢某個分桶level = 0的檔案數量,可以瞭解該分桶小檔案合并的情況。

record_count

Long

檔案內的資料條數。

file_size_in_bytes

Long

檔案大小,以位元組為單位。

說明

未被當前快照檔案指向的歷史資料檔案不會顯示在查詢結果裡。

Tags系統資料表

Tags系統資料表可以查詢每個Tag檔案的具體資訊,例如Tag的名稱、建立Tag時使用的快照編號等。

以下SQL語句查詢mycat.mydb.mytbl的Tags系統資料表。

SELECT * FROM mycat.mydb.`mytbl$tags`;

Snapshots系統資料表常用的列如下。

列名

資料類型

含義

tag_name

String

Tag名稱。

snapshot_id

Long

建立Tag時基於的快照的編號。

schema_id

Long

Tag對應的表結構編號,可在Schemas系統資料表中查詢編號對應的具體表結構。

commit_time

Timestamp

建立Tag時基於的快照的建立時間。

record_count

Long

檔案內的資料條數。

特定消費行為的系統資料表

Read-optimized系統資料表

通常,Paimon表在消費過程中,需要將資料檔案在記憶體中歸併之後,才能產出真正的資料,一定程度上會影響查詢效率。如果您對Paimon主鍵表的批作業讀取效率,或即席(OLAP)查詢效率有較高的要求,可以消費該Paimon表對應的Read-optimized系統資料表。Read-optimized系統資料表唯讀取不需要合并的檔案(主要是小檔案全量合并後的資料檔案),因此省去了在記憶體中歸併排序的流程,提高了查詢效率。然而,小檔案的全量合并頻率較低,因此read-optimized系統資料表產出的資料時效性偏低。您可以配置以下參數,使得小檔案全量合并在一段時間後強制進行,在寫入效率、消費效率與資料時效性之間進行平衡。

參數

說明

資料類型

預設值

備忘

compaction.optimization-interval

超過該時間間隔後,強制進行小檔案的全量合并。

Duration

如果小檔案的全量合并過於頻繁,可能導致寫入作業效率偏低。因此推薦該參數值設定在30 min以上。

以下SQL語句查詢mycat.mydb.mytbl最新快照對應的Read-optimized系統資料表。

SELECT * FROM mycat.mydb.`mytbl$ro`;

Audit Log系統資料表

如果您在消費Paimon表的過程中,需要瞭解每一條資料的操作類型是插入還是刪除,可以消費該Paimon表對應的Audit Log系統資料表。Audit log系統資料表產出的資料與對應的Paimon表一致,只是會在每條資料第1列的前面新增一個rowkind列,顯式儲存這條資料的類型,資料的操作類型共有+I(insert)、-U(update before)、+U(update after)、-D(delete)四種。而對於Audit Log系統資料表裡的每條資料而言,它的資料操作類型都是+I(insert)

以下SQL語句查詢mycat.mydb.mytbl最新快照對應的audit_log系統資料表。

SELECT * FROM mycat.mydb.`mytbl$audit_log`;

相關文檔

關於每種系統資料表完整的表結構詳情,請參見Apache Paimon 官方文檔