mysql分割槽技術

2022-08-11 13:39:11 字數 2220 閱讀 6368

把乙個表,從邏輯上分成多個區域,便於儲存資料。

採用分割槽的前提,資料量非常大。

如果資料表的記錄非常多,比如達到上億條,資料表的活性就大大降低,資料表的執行速度就比較慢、效率低下,影響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...