日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

單表打散

使用效果

PolarDB-X透明分布式的單表打散的工作模式就是將一個邏輯庫內的所有表,按照建表時是否顯式使用MySQL分區語法,產生如下的行為(如下圖所示):

  • 若邏輯表沒顯式指定MySQL的分區定義,將作為單表,并被隨機分配到 PolarDB-X的不同DN節點,實現負載均衡。

  • 若邏輯表顯式指定MySQL的分區定義,將作為分區表,各個分區均衡分布到不同的DN節點。

image.png

適用場景

由于該工作模式會將原有業務的所有MySQL單表自動打散各個DN節點,從而突破單機資源瓶頸并實現負載均衡。因此,該模式特別適合于業務應用的庫表總體數目眾多的場景,而且表間的JOIN關系越少,越適合這個模式。

在實際應用的過程中,關于透明分布式的單表打散工作模式的適用場景,可以參考最佳實踐

使用示例

創建使用單表打散的數據庫

PolarDB-X中,要使用透明分布式的單表打散工作模式,可以使用以下的建庫SQL:

CREATE DATABASE autodb1 MODE='auto' DEFAULT_SINGLE='on';

查看單表打散的完整的建庫語句:

mysql> show create database autodb1;
+----------+------------------------------------------------------------------------------------------------------------------+
| DATABASE | CREATE DATABASE                                                                                                  |
+----------+------------------------------------------------------------------------------------------------------------------+
| autodb1  | CREATE DATABASE `autodb1` CHARSET = `utf8mb4` COLLATE = `utf8mb4_general_ci` MODE = 'auto' DEFAULT_SINGLE = 'on' |
+----------+------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

創建多張MySQL單表并自動打散

可嘗試使用以下的建表SQL,在my_autodb內創建多張單表:

CREATE TABLE sin_t1(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime,
 primary key(id)
);

CREATE TABLE sin_t2(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime,
 primary key(id)
);

CREATE TABLE sin_t3(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime,
 primary key(id)
);

CREATE TABLE sin_t4(
 id bigint not null auto_increment, 
 bid int, 
 name varchar(30),
 birthday datetime,
 primary key(id)
);

查看單表打散后的單表實際拓撲

通過SHOW TOPOLOGY FROM #tableName 可以查看各個單表分布的實際位置:

mysql> show topology from sin_t1\G
*************************** 1. row ***************************
               ID: 0
       GROUP_NAME: AUTODB1_P00000_GROUP
       TABLE_NAME: sin_t1_HnMx
   PARTITION_NAME: p1
SUBPARTITION_NAME: 
      PHY_DB_NAME: autodb1_p00000
            DN_ID: polardbx-storage-0-master
STORAGE_POOL_NAME: _default
1 row in set (0.02 sec)

mysql> show topology from sin_t2\G
*************************** 1. row ***************************
               ID: 0
       GROUP_NAME: AUTODB1_P00001_GROUP
       TABLE_NAME: sin_t2_IT7l
   PARTITION_NAME: p1
SUBPARTITION_NAME: 
      PHY_DB_NAME: autodb1_p00001
            DN_ID: polardbx-storage-1-master
STORAGE_POOL_NAME: _default
1 row in set (0.01 sec)

mysql> show topology from sin_t3\G
*************************** 1. row ***************************
               ID: 0
       GROUP_NAME: AUTODB1_P00000_GROUP
       TABLE_NAME: sin_t3_HmtN
   PARTITION_NAME: p1
SUBPARTITION_NAME: 
      PHY_DB_NAME: autodb1_p00000
            DN_ID: polardbx-storage-0-master
STORAGE_POOL_NAME: _default
1 row in set (0.01 sec)

mysql> show topology from sin_t4\G
*************************** 1. row ***************************
               ID: 0
       GROUP_NAME: AUTODB1_P00001_GROUP
       TABLE_NAME: sin_t4_ab7e
   PARTITION_NAME: p1
SUBPARTITION_NAME: 
      PHY_DB_NAME: autodb1_p00001
            DN_ID: polardbx-storage-1-master
STORAGE_POOL_NAME: _default
1 row in set (0.01 sec)

從上述各個單表的 show topology 結果來看,可以發現 sin_t1 與 sin_t3、sin_t2 與 sin_t4 分別落在了不同的DN上,sin_t1 與 sin_t3 落在DN polardbx-storage-0-master 上,而 sin_t2 與 sin_t4 落在DN polardbx-storage-1-master上。

注意事項

單表打散后,部分表的JOIN執行性能可能會出現變化,這是因為原本同一個DN的多個單表的JOIN 由于落到不同的DN, 導致JOIN算子無法繼續下推至DN執行。