MySQL KEY分割槽

pursuer.chen發表於2016-11-06

介紹

KEY分割槽和HASH分割槽相似,但是KEY分割槽支援除text和BLOB之外的所有資料型別的分割槽,而HASH分割槽只支援數字分割槽,KEY分割槽不允許使用使用者自定義的表示式進行分割槽,KEY分割槽使用系統提供的HASH函式進行分割槽。當表中存在主鍵或者唯一鍵時,如果建立key分割槽時沒有指定欄位系統預設會首選主鍵列作為分割槽字列,如果不存在主鍵列會選擇非空唯一鍵列作為分割槽列,注意唯一列作為分割槽列唯一列不能為null。

 

 

一、常規KEY

1.建立分割槽

CREATE TABLE tb_key (
    id INT ,
    var CHAR(32) 
)
PARTITION BY KEY(var)
PARTITIONS 10;
SELECT PARTITION_NAME,PARTITION_METHOD,PARTITION_EXPRESSION,PARTITION_DESCRIPTION,TABLE_ROWS,SUBPARTITION_NAME,SUBPARTITION_METHOD,SUBPARTITION_EXPRESSION 
FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA=SCHEMA() AND TABLE_NAME='tb_key';
INSERT INTO tb_key() VALUES(1,'星期一'),(2,'1998-10-19'),(3,'new'),(4,'非常好'),(5,'5');

二、LINEAR KEY

同樣key分割槽也存線上性KEY分割槽,概念和線性HASH分割槽一樣。

1.建立分割槽

CREATE TABLE tb_keyline (
    id INT NOT NULL,
    var CHAR(5)
)
PARTITION BY LINEAR KEY (var)
PARTITIONS 3;

三、分割槽管理

key分割槽管理和hash分割槽管理是一樣的,只能刪除和增加分割槽,這裡不再做詳細介紹。

1.刪除2個分割槽

ALTER TABLE tb_key COALESCE PARTITION 2;

2.增加三個分割槽

ALTER TABLE tb_key add PARTITION partitions 3;

四、移除表的分割槽

ALTER TABLE tablename
REMOVE PARTITIONING ;

注意:使用remove移除分割槽是僅僅移除分割槽的定義,並不會刪除資料和drop PARTITION不一樣,後者會連同資料一起刪除

 

 

分割槽系列文章: 

RANGE分割槽:http://www.cnblogs.com/chenmh/p/5627912.html

LIST分割槽:http://www.cnblogs.com/chenmh/p/5643174.html

COLUMN分割槽:http://www.cnblogs.com/chenmh/p/5630834.html

HASH分割槽:http://www.cnblogs.com/chenmh/p/5644496.html

子分割槽:http://www.cnblogs.com/chenmh/p/5649447.html

指定各分割槽路徑:http://www.cnblogs.com/chenmh/p/5644713.html

分割槽建索引:http://www.cnblogs.com/chenmh/p/5761995.html

分割槽介紹總結:http://www.cnblogs.com/chenmh/p/5623474.html

總結

 KEY分割槽和HASH分割槽類似,在處理大量資料記錄時能有效的分散資料熱點。

 

 

 

備註:

    作者:pursuer.chen

    部落格:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。

《歡迎交流討論》

相關文章