把乙個表,從邏輯上分成多個區域,便於儲存資料。
採用分割槽的前提,資料量非常大。
如果資料表的記錄非常多,比如達到上億條,資料表的活性就大大降低,資料表的執行速度就比較慢、效率低下,影響mysql資料庫的整體效能,就可以採用分割槽解決
分割槽是mysql本身就支援的技術
list :條件值為乙個資料區。
演算法:根據「欄位的內容值」是否在某個「區域」中進行分割槽,通過預定義的列表的值來對資料進行分割。
語法:利用表選項:partition
完成。create table table_name(
字段資訊,
索引,) charset utf8
partition by list(分割槽字段)(
partition list_name1 values in (),
partition list_name2 values in()
);例子:建立一張表,該錶儲存有全國20家分公司的職員記錄,這
20家分公司的編號從1到20.而這20家分公司分布在全國4個區域,如下表所示:
id name store_id(分公司的
id)北部 1,4,5,6,17,18
南部 2,7,9,10,11,13
東部 3,12,19,20
西部 8,14,15,16
檢視執行計畫
注意:where後面的字段必須是分割槽字段
定義:利用「字段值」取值範圍將資料分割槽,區間要連續並且不可以重疊,使用values less than 進行分割槽定義
less than 小於等於
maxvalue 可能的最大值
例子:使用者餘額表
create table p_range(
id int(11) not null,
name varchar(32) not null,
totle_money int(11) not null
)partition by range (totle_money)(
partition p1 values less than (100),
partition p2 values less than(1000),
partition p3 values less than(10000),
partition p4 values less than maxvalue
);注意:
1,上面分割槽語句的values less than maxvalue子句是表示當有大於10000的時候都插入到p4中,maxvalue代表最大可能整數值,否則當我們插入一條記錄包含10001時會報錯。
2,順序是有規定的,當把p1設為1000而p2設為100時會報錯。
3,無論是哪一種分割槽型別,如果表裡有主鍵,則分割槽字段必須是主鍵或者主鍵的一部分,否則會報錯。
a primary key must include all columns in the table's partitioning function
如果新增主鍵 alter table p_range add primary key(id,totle_money)
給range/list 增加分割槽
alter table table_name add
partition(
partition 分割槽名
values less than (常量)
或partition 分割槽名
in (n,n,n)
);給 range/list 刪除分割槽
alter table table_name drop partition
分割槽名稱
;注意:刪除的分割槽裡的資料會被刪除。
mysql分割槽技術
在mysql 5.1.3之後引入和partition 分割槽 的概念。這個是個好東東。以前遇到乙個大表的時候,我們會手動將其分為幾個小表 就是分表操作 但是分表操作有幾個缺點 1 麻煩,這裡指的麻煩是不僅對於呼叫分表的sql語句的處理上,也是分表的具體操作步驟上。2 當乙個表從單錶變為分表的時候,上...
MySQL分割槽技術
mysql分割槽技術是mysql5.1以後出現的新技術,能替代分庫分表技術,它的優勢在於只在物理層面來降低資料庫壓力。常用的mysql分割槽型別 1.range分割槽 基於屬於乙個給定的連續區間的列值,把多行分配給分割槽 基於列 2.list分割槽 類似於按range分割槽,區別在於list分割槽是...
Mysql 分割槽技術一理論
一 基本理論 在mysql大資料處理上,水平分表技術是很常用的,但是分表技術帶來了php處理的很大開銷,為了解決這個弊端mysql5.1以後以外掛程式的方式增加了乙個新的技術 分割槽技術。分割槽技術是在邏輯層進行的水平分表,對於應用程式而言還是一張表,mysql5.1有4種分割槽型別 1 range...