MySql分割槽學習總結三 HASH,KEY

2021-09-02 11:42:25 字數 1696 閱讀 6312

在本次章節介紹hash分割槽和key分割槽

hash分割槽

hash分割槽的一大特點就是可以更平均的將資料分散到各個分割槽中,不會像range分割槽一樣資料可能會集中在乙個分割槽中。hash分割槽簡單來說是基於取模運算結果進行的分割槽。hash分割槽分為常規分割槽和線性分割槽。但是常規分割槽在分割槽管理上過於麻煩,所以我們一般使用線性分割槽。

create table c (

id int not null,

name varchar(20),

*** varchar(20)

)partition by linear hash (id) partitions 4;

以上操作建立了有4個hash分割槽的表c,當插入記錄時,會對插入的id進行2的冪演算法得到分割槽編號。

key分割槽

key分割槽和hash分割槽類似,不過key分割槽只支援伺服器提供的hash函式,hash分割槽只支援整數,key分割槽支援除blob ,text型別外的其他型別作為分割槽鍵。

create table d (

id int not null,

name varchar(20),

job varchar(30) not null

) partition by key (job) partition 4;

以上以job作為分割槽鍵建立key分割槽。如果沒有指定分割槽鍵,那麼會預設主鍵為分割槽鍵,如果沒有主鍵,則預設非空唯一鍵作為分割槽鍵,此時作為分割槽鍵的唯一鍵一定要是非空的,如果可以為空,則會出錯。如果沒有非空唯一鍵,則不能建立分割槽。建表時使用linear key關鍵字,會和linear hash一樣進行2的冪演算法得到分割槽編號。

分割槽管理

合併分割槽:

hash和key分割槽不能像range一樣直接刪除分割槽,不過可以將分割槽由4個合併為2個。

alter table d coalesce partition 2;
增加分割槽:

alter tbale d add parition partitions  8;
以上為增加8個分割槽,不是增加到8個分割槽。這一點對於hash分割槽也是如此

有關分割槽的操作

下面介紹幾個關於檢視表分割槽的操作

查詢表中個分割槽名稱,資料區間,記錄數量,分割槽鍵

檢視表結構

MySql分割槽學習總結一 分割槽概述

mysql分割槽學習總結一 分割槽概述 通過看書和查資料對mysql的分割槽進行了簡單了解。稱還有映像記錄一下,以便將來使用時回顧。分割槽簡述 什麼是分割槽?mysql從5.1以後開始支援分割槽功能。分割槽就是根據一定的規則,將資料庫中的表分為多個更小的部分。但在邏輯上,還是只有乙個表或者乙個索引,...

MySQL學習總結(三)索引

補充一下,上一章節中約束的一點東西。我們在為約束設定名稱的時候 識別符號 推薦寫法 約束縮寫 欄位名 這樣讓人看起來就會很清晰。例如 fk deptno,我們通過索引的名字就可以大概知道這是乙個設定的關於deptno欄位的外來鍵。乙個索引包含表中按照一定順序排序的一列或者多列字段。建立索引主要是為了...

MySQL 分割槽知識點(三)

前言 mysql 分割槽後每個分割槽成了獨立的檔案,雖然從邏輯上還是一張表其實已經分成了多張獨立的表,從 information schema.innodb sys tables 系統表可以看到每個分割槽都存在獨立的 table id 由於 innodb 資料和索引都是儲存在 ibd 檔案當中 從i...