Atitit.常用分區api的attilax總結
1. Api 來源與oracle與mysql
1.1. 分區定義partition by range (uid)
使用VALUES LESS THAN操作符來進行定
1.1.1. mysql
partition by range (uid)
( partition p0 values less than (10000) data directory = "/data00/" index directory = "/data00/",
partition p1 values less than (20000) data directory = "/data00/" index directory = "/data00/",
partition p2 values less than (30000) data directory = "/data00/" index directory = "/data00/",
partition p3 values less than maxvalue data directory = "/data00/" index directory = "/data00/"
);
1.1.2. Oracle分區定義partition by range (uid)
使用VALUES LESS THAN操作符來進行定
partition by range (uid)
( partition p0 values less than (10000) data directory = "/data00/" index directory = "/data00/",
partition p1 values less than (20000) data directory = "/data00/" index directory = "/data00/",
partition p2 values less than (30000) data directory = "/data00/" index directory = "/data00/",
partition p3 values less than maxvalue data directory = "/data00/" index directory = "/data00/"
);
1.2. 分區按照hash
1.2.1. Oracle語法
散列分區:指在一個(或多個列)上應用一個散列函數,行會按這個散列值放在某個分區中。適用於事先不知道指定范圍內有多少數據,以及如果用范圍分區,各區之間數據量差異很大、很難人工干預分區間數量平衡的情況。語法是:partition by hash()。例如:
create table department(
Deptnoid int primary key,
Deptname varchar(20)
)
partition by hash(Deptnoid) (
Partition p1,
Partition p2
)
1.3. 列表分區: partition by list()。
指定一個離散值集,來確定應當存儲在一起的數據。例如,可以指定STATUS列值在(’A’,’M’,’Z’ )中的行放在分區1中,STATUS值在( ‘D’,P’,’Q’ )中的行放在分區2中,依此類推。列表分區和范圍分區的不同主要是列表分區按照預先給定的一系列離散值進行分區,新數據插入表中時,根據分區鍵值找到對應分區。列表分區的分區列只有一個,當然其單個分區對應值可以使多個。在分區時必須確定分區列可能存在的值,一旦插入的列值不在分區范圍內,則插入/更新就會失敗,因此通常建議使用list分區時,要創建一個default分區,存儲那些不在指定范圍內的記錄,類似range分區中的maxvalue分區。語法是:partition by list()。例如:
create table ListTable(
id int primary key,
area varchar(10)
)
partition by list(area)
(
partition part1 values('guangdong','beijing') ,
partition part2 values('shanghai','nanjing'),
partition part3 values(default)
);
1.4. 分區的修改和合並
以下是將p0分區再分割成2分區s0,s1的例子:
1.5. Del parition
alter table titles drop partition p01;
1.6. 查看分區how create table 表名
看創建分區表
Uapi listPatition
1.6.1. 分區管理 oracle
分區可以和表一樣進行增刪改查。SQL語句示意如下。
添加分區:alter table xxx add partition p5 values less than (100)。特別注意對於list、range這樣存在范圍值的分區,所增加的分區值必須要大於當前分區中的最大值,否則會報錯,hash分區無此限制。
刪除分區:alter table student drop partition p4.
合並分區:alter table student merge partitions p3, p4 into partition p6.