mysql 表分割槽

2021-10-03 08:19:32 字數 3428 閱讀 9980

修改表的主鍵

alter table tb_channel_pv drop primary key,add primary key (`id`,`channel`);

測試新增分割槽和刪除分割槽

新增刪除range分割槽

#(1)建立乙個分割槽:

create table titles (

emp_no int not null,

title varchar(50) not null,

from_date date not null,

to_date date,

key (emp_no),

primary key (emp_no,title, from_date)

) partition by range columns(from_date)

(partition p01 values less than ('1985-12-31'),

partition p02 values less than ('1990-12-31'),

partition p03 values less than ('1995-12-31'),

partition p04 values less than ('2000-12-31'),

partition p05 values less than ('2005-12-31'),

partition p06 values less than ('2010-12-31'),

partition p07 values less than ('2015-12-31'),

partition p08 values less than ('2020-12-31'),

partition p09 values less than ('2025-12-31'),

partition p10 values less than ('2030-12-31'));

#(2)新增分割槽:

#備註:不能超過p04的範圍,嚴格遞增每個分割槽,即最小不能小於前乙個#分割槽

#下面新曾了兩個分割槽n01和n02

alter table titles

reorganize partition p04 into(

partition n01 values less than('1997-12-31'),

partition n02 values less than('1998-12-31'),

partition p04 values less than('2000-12-31')

);#(3)刪除分割槽:

#刪除分割槽即刪除資料。

alter table titles drop partition p01;

新增刪除list分割槽

#(1)建立list分割槽

create table titles (

emp_no int not null,

title varchar(50) not null,

from_date date not null,

to_date date,

key (emp_no),

primary key (emp_no,title, from_date)

) partition by list columns(title)

(partition p0 values in ('assistant engineer'),

partition p1 values in ('engineer'),

partition p2 values in ('manager'),

partition p3 values in ('senior engineer'),

partition p4 values in ('senior staff'),

partition p5 values in ('staff'),

partition p6 values in ('technique leader'));

#(2)新增分割槽

alter table titles add partition(partition p7 values in('ceo'));

#(3)刪除分割槽:

alter table titles drop partition p0;

新增刪除hash分割槽

#(1)建立hash分割槽

create table titles (

emp_no int not null,

title varchar(50) not null,

from_date date not null,

to_date date,

key (emp_no),

primary key (emp_no,title, from_date)

) partition by hash(emp_no)

partitions 4;

#(2)刪除hash分割槽

4個分割槽減少到兩個,4-2=2

alter table titles coalesce partition 2;

#(3)新增hash分割槽

增加到5個,2+3=5

alter table titles add partition partitions 3;

新增刪除key分割槽

#(1)建立key分割槽

create table titles (

emp_no int not null,

title varchar(50) not null,

from_date date not null,

to_date date,

key (emp_no),

primary key (emp_no,title, from_date)

) partition by key(emp_no)

partitions 4;

#(2)刪除分割槽,同hash

alter table titles coalesce partition 2;

#(3)新增分割槽,同hash

alter table titles add partition partitions 3;

mysql表分割槽全文搜尋 Mysql表分割槽

什麼時候使用分割槽 海量資料 資料表索引大於伺服器有效記憶體 分割槽的限制 大部分只能對資料表的整型列進行分割槽,或者資料列可以通過分割槽函式轉化成整型列 其中columns支援 integer string date datetime型別 最大分割槽數目不能超過1024 如果含有唯一索引或者主鍵,...

mysql表分割槽

表分割槽的優點 查詢優化 缺點 除了資料庫管理方面複雜了點,其它的還沒有發現 只有5.1及之後的版本才支付分割槽,同時5.1中分割槽的一些維護的工具還不完善 mysql目前四種分割槽 1range 根據某個列的某種運算進行分割槽,分割槽的標誌都是該列的某種運算後的連續區間 create table ...

mysql表分割槽

在使用資料庫的過程中,經常遇到的情況是新增資料量與日俱增。而且通常來說,我們的資料訪問一般都是在最新資料上進行的。這時候對時間列增加分割槽是一種很好的提高訪問效能的方式。已經有寫了很好的文章,直接貼在這裡 這兩篇文章中的內容類似,對於增加分割槽 建立事件自動增加分割槽都寫的很好。但是有乙個很重要的問...