MySQl分割槽表小結 RANGE分割槽

2021-08-08 11:19:18 字數 2390 閱讀 1493

才疏學淺 , 不足之處還望指出 , 僅僅是自己使用中的一些體會

**

分割槽表目前分為四種:

range : 主要介紹 , 其餘三種還沒有用過

hash

list

key

閒話不多說 , 直接上**

range分割槽可以在建立表的時候建立(這裡我用的是sqlyog圖形化 ,並非mysql非圖形化介面)

create table `2017` (

--(其餘字段自行新增)

`stationcode` varchar(255) default null,

`timepoint` datetime default null,

`regionid` varchar(10) default null,

) engine=innodb default charset=utf8 row_format=dynamic

partition by range(month(timepoint))

( partition p101 values less than (2),

partition p102 values less than (3),

partition p103 values less than (4),

partition p104 values less than (5),

partition p105 values less than (6),

partition p106 values less than (7),

partition p107 values less than (8),

partition p108 values less than (9),

partition p109 values less than (10),

partition p110 values less than (11),

partition p111 values less than (12),

partition p112 values less than (13)

);

可以看得出 , 我是按照月份來分割槽的 , 每個月是乙個分割槽 .

如果已經建好了表 , 那就使用修改語句 , 但是如果表中的資料量過於龐大 , 建議還是進行資料的遷移

資料量少 : 建議100w一下或者更少

可以使用

alter table 2017 partition by range(month(timepoint))

( partition p101 values less than (2),

partition p102 values less than (3),

partition p103 values less than (4),

partition p104 values less than (5),

partition p105 values less than (6),

partition p106 values less than (7),

partition p107 values less than (8),

partition p108 values less than (9),

partition p109 values less than (10),

partition p110 values less than (11),

partition p111 values less than (12),

partition p112 values less than (13)

);

修改表結構

資料量大

使用資料遷移 :

建立一張空表 a , 欄位和需要遷移的表 b 結構一致 , 順便將空表的分割槽建立好

insert into a select * from b;

當然這樣的話會在資料量大的時候插入很慢

詳細資料遷移參考:

刪除分割槽:

alter table 2017 drop partition p101 ;
檢視表分割槽:

show create table 2017
分割槽表中查詢對比

explain select count(*) from 2017 where timepoint > '***x-xx-xx' and timepoing < '***x-xx-xx'

MySQL 橫向表分割槽之RANGE分割槽小結

mysql 橫向表分割槽之 range 分割槽小結 by 授客qq 1033553122 目錄 簡介1range分割槽1 建立分割槽表 1檢視表分割槽 2新增表分割槽 2新增資料 3分割槽表查詢 3刪除資料 4刪除分割槽 4mysql表分割槽 range 分割槽,屬於橫向分割槽。舉例說,假如有 10...

MySQL分割槽表

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

mysql分割槽表

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