PolarDB-X實例支持3種類型的表:分區表、廣播表和單表。前面的文章已經實踐過分區表了,本文将介紹單表和廣播表的操作,以及不同表類型之間的相互轉換。
一、單表PolarDB-X允許創建表時通過指定關鍵字SINGLE來創建單表(不進行任何分區的表),示例DDL如下:
CREATE TABLE single_tbl(
id bigint not null auto_increment,
bid int,
name varchar(30),
primary key(id)
) SINGLE;
查看該邏輯表的節點拓撲:
show topology from single_tbl;
如圖所示,隻有一個分區,也就是單表。
二、廣播表
PolarDB-X允許創建表時通過指定關鍵字BROADCAST來創建廣播表(該表将在所有DN節點上有一份數據完全相同的拷貝),示例DDL如下:
CREATE TABLE broadcast_tbl(
id bigint not null auto_increment,
bid int,
name varchar(30),
primary key(id)
) BROADCAST;
查看該邏輯表的節點拓撲:
show topology from broadcast_tbl;
如果PolarDB-X 集群中有三個DN 節點,那麼就會在三個DN 節點上相同的表,如圖所示:
三、表類型轉換
PolarDB-X實例支持3種類型的表:分區表、廣播表和單表。我們可以通過ALTER TABLE語句将表的類型在分區表、廣播表和單表之間進行轉換,同時還能對分區表的分區策略進行變更。
(1)單表或廣播表變為分區表
因業務擴展,單表 single_tbl 無法承載日益增長的數據。此時,可以使用如下語句将該單表變更為分區表(以 id 為分區鍵,采用KEY分區策略):
ALTER TABLE single_tbl PARTITION BY KEY(`id`);
如需指定分區數量,可以使用如下語句:
ALTER TABLE single_tbl PARTITION BY KEY(`id`) PARTITIONS 8;
(2)單表或分區表變為廣播表
可以使用如下語句将單表或分區表 single_tbl 變更為廣播表:
ALTER TABLE single_tbl BROADCAST;
執行完成之後,可以該邏輯表的節點拓撲,以及查看full create table 語句,如圖所示:
(3)廣播表或分區表變為單表
可以使用如下語句将廣播表或分區表 single_tbl 變更為單表:
ALTER TABLE single_tbl SINGLE;
或者:
ALTER TABLE single_tbl REMOVE PARTITIONING;
四、變更分區表的分區策略
使用如下語句在PolarDB-X數據庫中創建了一張分區表 part_order(根據order_id列進行KEY分區):
CREATE TABLE part_order (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`order_id` varchar(20) DEFAULT NULL,
`buyer_id` varchar(20) DEFAULT NULL,
`seller_id` varchar(20) DEFAULT NULL,
`order_snapshot` longtext DEFAULT NULL,
`order_detail` longtext DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `l_i_order` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PARTITION BY KEY(`order_id`);
執行過程如下所示:
現需要對part_order表的分區策略作出如下變更:
可以使用如下語句實現上述變更:
ALTER TABLE part_order PARTITION BY KEY(order_id, buyer_id) PARTITIONS 8;
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!