Mysql分割槽表使用

2022-09-09 22:48:23 字數 2193 閱讀 3819

一、什麼是分割槽表

分割槽表就是按一定規則將一張表分割成多個部分,達到和物理分表同樣的效果,但操作起來更 簡單,不同於物理分表那樣使用時還需要指定使用的資料表。對於使用者來說和操作普通表無差別。

二、優勢與限制

1、優勢

2、限制

三、分割槽型別

1、range分割槽

基於乙個給定連續區間範圍,把資料分配到不同的分割槽;

create

table

r1 (

a int,

b int)

partition

byrange (a) (

partition p0

values less than (5

), partition p1

values

less than (maxvalue)

);

2、list分割槽

類似range分割槽,區別在list分割槽是基於列舉出的值列表分割槽,range是基於給定連續區間範圍分割槽;

create

table

customers_1 (

first_name

varchar(25

), last_name

varchar(25

), street_1

varchar(30

), street_2

varchar(30

), city

varchar(15

), renewal date

)partition

bylist columns(city) (

partition pregion_1

values

in('

xian

', '

chengdu

', '

chongqing

'),

partition pregion_2

values

in('

shijiazhuang

', '

tianjin

', '

beijing

'),

partition pregion_3

values

in('

hangzhou

', '

nanjing')

);

3、hash分割槽

基於使用者定義的表示式返回值來選擇分割槽,該表示式對要插入到表的行中列值操作。

ps:表示式必須返回整型資料。

create

table

employees (

id intnot

null

, fname

varchar(30

), lname

varchar(30

), hired date

notnull

default

'1970-01-01',

separated date

notnull

default

'9999-12-31',

job_code

int,

store_id

int)

partition

by hash(store_id) partitions 4;

4、key分割槽

類似hash分割槽,但是hash分割槽允許使用使用者自定義表示式,而key分割槽不允許,它需要使用 mysql伺服器提供的hash函式,同時hash分割槽只支援整數分割槽,而key分割槽支援除blob和 text型別外其他列;

ps:key分割槽對列資料進行hash運算所以有時候資料分布會非常不均勻。

create

table

k1 (

id intnot

null

primary

key,

name

varchar(20))

partition

bykey() partitions 2;

如果不指定列,mysql會自動使用主鍵或者唯一健所在的列。

MySQL分割槽表

分割槽表是一種粗粒度,簡易的索引策略,適用於大資料的過濾場景.最適合的場景是,沒有合適的索引時,對其中幾個分割槽表進行全表掃瞄.或者只有乙個分割槽表和索引是熱點,而且這個分割槽和索引能夠全部儲存在記憶體中.限制單錶分割槽數不要超過150個,並且注意某些導致無法做分割槽過濾的細節,分割槽表對於單條記錄...

mysql分割槽表

對使用者來說,分割槽表是乙個獨立的邏輯表,但是底層由多個物理子表組成。實現分割槽的 實際上是對一組底層表的控制代碼物件的封裝。mysql在建立表時使用partition by子句定義每個分割槽存放的資料。在執行查詢的時候,優化器會根據分割槽定義過濾那些沒有我們需要資料的分割槽,這樣查詢就無須掃瞄所有...

mysql分割槽表 MySQL分割槽表的正確使用方法

mysql分割槽表概述 我們經常遇到一張表裡面儲存了上億甚至過十億的記錄,這些表裡面儲存了大量的歷史記錄。對於這些歷史資料的清理是乙個非常頭疼事情,由於所有的資料都乙個普通的表裡。所以只能是啟用乙個或多個帶where條件的delete語句去刪除 一般where條件是時間 這對資料庫的造成了很大壓力。...