本文介紹了創建及變更冷數據歸檔表的語法。
創建冷數據歸檔表
本文以創建TTL表t_order和關聯的歸檔表t_order_oss為例說明創建冷數據歸檔表的步驟。
執行以下命令,在AUTO模式數據庫中創建TTL表t_order。
CREATE TABLE t_order ( id bigint NOT NULL AUTO_INCREMENT, gmt_modified DATETIME NOT NULL, PRIMARY KEY (id, gmt_modified) ) PARTITION BY HASH(id) PARTITIONS 16 LOCAL PARTITION BY RANGE (gmt_modified) INTERVAL 1 MONTH EXPIRE AFTER 12 PRE ALLOCATE 3;
說明如果t_order表已經存在并且非TTL表,可執行以下命令,將其變更為TTL表:
ALTER TABLE t_order LOCAL PARTITION BY RANGE (gmt_modified) STARTWITH '2021-01-01' INTERVAL 1 MONTH EXPIRE AFTER 12 PRE ALLOCATE 6;
TTL表的相關介紹及語法請參見TTL表功能。
執行以下命令,創建歸檔表t_order_oss,并與t_order表綁定。
CREATE TABLE t_order_oss LIKE t_order ENGINE = 'OSS' ARCHIVE_MODE = 'TTL';
說明ENGINE = 'OSS'
表示表引擎為OSS服務,ARCHIVE_MODE = 'TTL'
表示使用TTL模式進行表歸檔。歸檔表僅支持只讀功能,不支持通過SQL直接寫入數據。
當t_order表中的數據過期并歸檔到t_order_oss表中后,在歸檔數據詳情頁,可查看到歸檔表的歸檔狀態。
也可以通過查詢information_schema.archive視圖,查看歸檔表的歸檔狀態。
歸檔表DDL
綁定歸檔表后,PolarDB-X支持對源TTL表執行部分DDL,并將DDL操作自動關聯到歸檔表中。支持的語法如下:
ALTER TABLE用于改變表的結構,如增加列、增加索引和修改數據定義。詳細語法請參見ALTER TABLE(AUTO模式)。
ALTER TABLE tbl_name
[alter_option [, alter_option] ...]
alter_option: {
table_options
| ADD [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| ADD [COLUMN] (col_name column_definition,...)
| ADD {INDEX | KEY} [index_name]
[index_type] (key_part,...) [index_option] ...
| ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY]
[index_name] [index_type] (key_part,...)
[index_option] ...
| ALGORITHM [=] {DEFAULT | INPLACE | COPY}
| ALTER [COLUMN] col_name {
SET DEFAULT {literal | (expr)}
| DROP DEFAULT
}
| CHANGE [COLUMN] old_col_name new_col_name column_definition
[FIRST | AFTER col_name]
| [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]
| DROP [COLUMN] col_name
| DROP {INDEX | KEY} index_name
| MODIFY [COLUMN] col_name column_definition
[FIRST | AFTER col_name]
| RENAME {INDEX | KEY} old_index_name TO new_index_name
| RENAME [TO | AS] new_tbl_name
}
CREATE [UNIQUE] INDEX index_name
[index_type]
ON tbl_name (key_part,...)
[index_option]
[algorithm_option | lock_option] ...
DROP INDEX index_name ON tbl_name
[algorithm_option | lock_option]
通過MODIFY COLUMN
、CHANGE COLUMN
進行列數據類型變更的說明:
將支持為null的列修改成not null后,冷數據表中已有的null保持不變。
列類型變更會在讀取時將寫入歸檔表的列類型直接轉換為當前表的列類型。
列類型變更不支持修改拆分鍵類型。
不支持
Online modify column
。
只支持以下定義的同類類型之間的轉換,不能跨類型變更:
無符號整數類型:tinyint unsigned、smallint unsigned、mediumint unsigned、int unsigned、bigint unsigned支持取值范圍從小到大進行變更,以及變更數據類型長度。
有符號整數類型:tinyint、smallint、mediumint、int、bigint支持取值范圍從小到大進行變更,以及變更數據類型長度。
字符串類型:char、varchar之間轉換,以及變更數據類型長度。