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

分區(qū)類型介紹

PolarDB-X數(shù)據(jù)庫提供了多種不同類型的分區(qū)策略,用于數(shù)據(jù)庫控制如何將數(shù)據(jù)放入分區(qū), 包括以下幾種:

  • Hash類型的分區(qū)策略

    • HASH(兼容社區(qū)MySQL的HASH分區(qū)語法)

    • KEY(兼容社區(qū)MySQL的KEY分區(qū)語法)

  • Range類型的分區(qū)策略

    • RANGE(兼容社區(qū)MySQL的RANGE分區(qū)語法)

    • RANGE COLUMNS(兼容社區(qū)MySQL的RANGE COLUMNS分區(qū)語法)

  • List類型的分區(qū)策略

    • LIST(兼容社區(qū)MySQL的LIST分區(qū)語法)

    • LIST COLUMNS(兼容社區(qū)MySQL的LIST COLUMNS分區(qū)語法)

  • 特定場景的分區(qū)策略

    CO_HASH(PolardDB-X 的特色分區(qū)語法)

Hash類型

基于用戶指定的分區(qū)列或分區(qū)函數(shù)表達式的值,使用內(nèi)置的一致性哈希算法計算其哈希值并進行分區(qū)路由的策略。按是否支持使用分區(qū)函數(shù)表達式或使用多個分區(qū)列作為分區(qū)鍵,Hash分區(qū)策略又可以細分為Key分區(qū)Hash分區(qū)兩種分區(qū)策略。

表 1. Key分區(qū)策略與Hash分區(qū)策略對比

分區(qū)策略

分區(qū)鍵支持

是否支持分區(qū)函數(shù)

語法示例

特點與限制

路由描述(點查)

Key(默認的分區(qū)策略)

單列分區(qū)鍵

PARTITION BY KEY(c1)

  • 不支持熱點分裂;

  • 最多有1個分區(qū)列參與路由計算;

  1. 按c1列的值,使用一致性哈希算法計算其哈希c1_hash;

  2. 按哈希值 c1_hash進行分區(qū)路由。

向量分區(qū)鍵

PARTITION BY KEY(c1,c2,...,cn)

  • 支持熱點分裂;

  • 建表后默認僅第1個分區(qū)列c1實際參與路由計算,熱點分裂時可以使用c2,...,cn等更多的分區(qū)列;

  • 最多允許n個分區(qū)列同時參與路由計算;

  • 分區(qū)列數(shù)目n默認不能超過5個。

  1. (c1,c2,...,cn)這N個列的值組成一組分區(qū)鍵向量,并使用一致性哈希算法為向量的各個列的值計算其哈希值,從而將一個分區(qū)鍵向量映射成一個哈希值向量(c1_hash,c2_hash,...,cn_hash)

  2. 將哈希值向量(c1_hash,c2_hash,...,cn_hash)按range路由并找到目標分區(qū)。

Hash

單列分區(qū)鍵

PARTITION BY HASH(c1)

  • 不支持熱點分裂;

  • 一個分區(qū)列參與路由。

  • 目前支持11個分區(qū)函數(shù):

    • YEAR

    • MONTH

    • DAYOFMONTH

    • DAYOFWEEK

    • DAYOFYEAR

    • TO_DAYS

    • TO_MONTHS

    • TO_WEEKS

    • TO_SECONDS

    • UNIX_TIMESTAMP

    • SUBSTR/SUBSTRING

PARTITION BY HASH(c1)與PARTITION BY KEY(c1)完全等同 ,其路由算法與PARTITION BY KEY(c1)完全一致。

PARTITION BY HASH(YEAR(c1))

  1. 按c1列的值,使用YEAR分區(qū)函數(shù)計算其對應(yīng)的年份year;

  2. 將年份year使用一致性哈希算法計算其哈希值year_hash;

  3. 按哈希值year_hash進行分區(qū)路由。

向量分區(qū)鍵

PARTITIONBY HASH(c1,c2,...,cn)

  • 不支持熱點分裂;

  • 建表后,n個分區(qū)列將同時與路由;

  • 分區(qū)列數(shù)目n默認不能超過5個。

  1. (c1,c2,...,cn)這N個分區(qū)列的值組成一組向量,并使用一致性哈希算法,計算該向量對應(yīng)哈希值hashVal;

  2. 按哈希hashVal進行分區(qū)路由。

Range類型

基于用戶指定的分區(qū)列或分區(qū)函數(shù)表達式的值,通過比較計算來確定數(shù)據(jù)位于哪些預(yù)定義分區(qū)的范圍并進行分區(qū)路由的策略。按是否支持使用分區(qū)函數(shù)表達式或使用多個分區(qū)列作為分區(qū)鍵,Range分區(qū)策略又可以細分為Range Columns分區(qū)Range分區(qū)兩種分區(qū)策略。

表 2. Range Columns分區(qū)策略與Range分區(qū)策略對比

分區(qū)策略

分區(qū)鍵支持

是否支持分區(qū)函數(shù)

語法示例

特點與限制

路由描述(點查)

Range Columns

單列分區(qū)鍵& 向量分區(qū)鍵

PARTITION BY RANGE COLUMNS (c1,c2,...,cn) ( PARTITION p1 VALUES LESS THAN (1,10,...,1000), PARTITION p2 VALUES LESS THAN (2,20,...,2000) ...)

支持熱點分裂(例如c1有熱點值88,可以使用c2進行分區(qū)分裂解決熱點)。

  1. (c1,c2,...,cn)這N個列的值組成一組分區(qū)鍵向量;

  2. 根據(jù)這個分區(qū)鍵向量(c1,c2,...,cn)按二分查找算法判斷它屬于哪個預(yù)定義分區(qū),并最終路由到目標分區(qū)。

Range

單列分區(qū)鍵

PARTITION BY RANGE(YEAR(c1)) ( PARTITION p1 VALUES LESS THAN (2019), PARTITION p2 VALUES LESS THAN (2021) ...)

  • 不支持熱點分裂;

  • 目前支持的分區(qū)函數(shù):

    • YEAR

    • MONTH

    • DAYOFMONTH

    • DAYOFWEEK

    • DAYOFYEAR

    • TO_DAYS

    • TO_MONTHS

    • TO_WEEKS

    • TO_SECONDS

    • UNIX_TIMESTAMP

    • SUBSTR/SUBSTRING

  1. 按c1列的值,使用YEAR分區(qū)函數(shù)計算其對應(yīng)的年份year;

  2. 年份year按二分查找算法判斷它屬于哪個預(yù)定義分區(qū),并路由到目標分區(qū)。

List類型

與Range分區(qū)策略類似,基于用戶指定的分區(qū)列或分區(qū)函數(shù)表達式的值,通過比較計算來確定數(shù)據(jù)位于哪些預(yù)定義分區(qū)的取值集合并進行分區(qū)路由的策略。按是否多個分區(qū)列作為分區(qū)鍵以及其使用方式的不同,List類型也分為List Columns分區(qū)List分區(qū)兩種分區(qū)策略。

表 3. List Columns分區(qū)策略與List分區(qū)策略對比

分區(qū)策略

分區(qū)鍵支持

是否支持分區(qū)函數(shù)

語法示例

特點與限制

路由描述(點查)

List Columns

單列分區(qū)鍵& 向量分區(qū)鍵

PARTITION BY LIST COLUMNS (c1,c2,...,cn) ( PARTITION p1 VALUES IN ((1,10,...,1000),(2,20,...,2000) ), PARTITION p2 VALUES IN ((3,30,...,3000),(3,30,...,3000) ), ...)

不支持熱點分裂

  1. (c1,c2,...,cn)這N個列的值組成一組分區(qū)鍵向量;

  2. 根據(jù)這個分區(qū)鍵向量(c1,c2,...,cn)按二分查找算法判斷它屬于哪個預(yù)定義分區(qū),并最終路由到目標分區(qū)。

List

單列分區(qū)鍵

PARTITION BY LIST(YEAR(c1)) ( PARTITION p1 VALUES IN (2018,2019), PARTITION p2 VALUES IN (2020,2021) ...)

不支持熱點分裂。

CoHash類型

PolarDB-X還針對比較常見的特定的應(yīng)用場景新擴展了一種新的名為CoHash的哈希分區(qū)策略,該策略可有效解決一個表需要同時按多個不同的相互有協(xié)同關(guān)系的分區(qū)列進行水平分區(qū)的問題。

由于CoHash分區(qū)策略與前面的Hash/Key分區(qū)策略有些類似,以下是它們的一些主要用法異同的對比。

表 4. 與Hash/Key分區(qū)策略的主要區(qū)別

主要區(qū)別點

CO_HASH

KEY

Hash

語法示例

PARTITION BY

CO_HASH(c1, c2)

PARTITOINS 8

PARTITION BY

KEY(c1, c2)

PARTITOINS 8

PARTITION BY

HASH(c1, c2)

PARTITOINS 8

單列分區(qū)鍵

不支持

支持

支持

向量分區(qū)鍵

支持

支持。

支持

向量分區(qū)列是否允許使用分區(qū)函數(shù)

允許。例如PARTITION BY

CO_HASH(

/*取c1列的后4位字符*/

RIGHT(c1, 4),

/*取c2列的后4位字符*/

RIGHT(c2, 4)

)

PARTITOINS 8

不允許

不允許

分區(qū)列之間的關(guān)系

協(xié)同關(guān)系。同一個的分區(qū)列取值的協(xié)同關(guān)系由業(yè)務(wù)提供并負責維護。例如:

  • c1 與 c2 的取值總是相同

  • 適合使用 CO_HASH(c1, c2)

  • c1 與 c2 的后4位字符總是相同

  • 適合使用 CO_HASH(RIGHT(c1,4), RIGHT(c2,4)))

類似聯(lián)合索引的前綴關(guān)系。

類似聯(lián)合索引的前綴關(guān)系。

前綴列等值查詢分區(qū)裁剪及示例

支持。例如:

  • c1='x': 支持分區(qū)裁剪并路由到單個分區(qū);

  • c1='x' and c2='y': 支持分區(qū)裁剪并路由到一個或0個分區(qū)(如果 c1='x'與c2='y'的路由分區(qū)不一樣,則返回0個分區(qū))。

支持。例如:

  • c1='x':支持分區(qū)裁剪并路由到一個或多個分片(如果x值進行了熱點分列,會返回多個分區(qū));

  • c1='x' and c2='y':支持分區(qū)裁剪并路由到單個分區(qū)。

不支持,必須帶上全分區(qū)列等值條件才支持分區(qū)裁剪。例如:

  • c1='x': 無法裁剪并全分區(qū)掃描;

  • c1='x' and c2='y': 支持分區(qū)裁剪并路由到單個分區(qū)。

非前綴列等查詢分區(qū)裁剪及示例

支持。所有分區(qū)列的等值條件均支持獨立的分區(qū)裁剪。例如:

  • c2='x': 支持分區(qū)裁剪并路由到單個分區(qū);

  • c1='x' or c2='y': 支持分區(qū)裁剪并路由到1個或2個分區(qū)(如果 c1='x'與c2='y'的路由分區(qū)是一樣,則返回1個分區(qū),否則掃描2個分區(qū))。

不支持。非前綴分區(qū)等值條件必須全分區(qū)掃描。例如:

  • c2='x': 全分區(qū)掃描;

  • c1='x' or c2='y': 全分區(qū)掃描。

不支持。非前綴分區(qū)等值條件必須全分區(qū)掃描。例如:

  • c2='x': 全分區(qū)掃描;

  • c1='x' or c2='y': 全分區(qū)掃描。

范圍查詢

不支持。全分區(qū)掃描。

不支持。全分區(qū)掃描。

不支持。全分區(qū)掃描。

路由描述(點查)

  1. 提取c1列(其他的分區(qū)列與之一樣)的等值查詢的原始值 v1 ;

  2. 如果c1列使用了分區(qū)函數(shù),則計算v1列的分區(qū)函數(shù)取值,f1 = partFunc(v1),否則取 f1 = v1;

  3. 使用一致性哈希算法計算 f1 的哈希值 c1_hash(long類型的整數(shù));

  4. 按哈希值c1_hash 進行分區(qū)路由。

可參考前邊的“Key分區(qū)與Hash 分區(qū)”的描述,此處忽略。

可參考前邊的“Key分區(qū)與 Hash分區(qū)”的描述,此處忽略。

熱點分裂

不支持。無法對某個具體的熱點值(比如c1='88') 進行進一步熱點分裂

支持

不支持

分區(qū)管理(常見的分區(qū)分裂、合并與遷移等)

支持

支持

支持

二級分區(qū)

支持

支持

支持