四種分區(qū)算法 hash? key? ? list? range
依據(jù)業(yè)務邏輯分區(qū):range,list
平均分配:hash,key
取余的算法(hash,key),增加分區(qū),減少分區(qū),數(shù)據(jù)不會收到影響,僅僅是重新分配數(shù)據(jù)到不同的分區(qū).
條件的分區(qū),增加沒關(guān)系,刪除分區(qū),導致分區(qū)內(nèi)的數(shù)據(jù)一同消失,類似刪除表!
Demo
創(chuàng)建表時,需要指定當前表的分區(qū),及其對于的分區(qū)算法:
最常用的分區(qū)邏輯,使用主鍵將數(shù)據(jù)平均分配到10個區(qū)中.hash算法就可以做到!
Drop table if exists‘zhangc’;
Create table‘zhangc’
(
Id ?int ?auto_increment,
Name varchar(32),
Birthday date,
Intro text,
Primary key(id)
)charset=utf8
利用id字段,對10取余(hash是取余算法)
Partition ?by ?hash(id)Partitions 10;
插入或其他的操作,常規(guī)操作即可,不需要有語法的改變,記錄就被依據(jù)算法存儲在某個區(qū)內(nèi)
hash,使用給定的一個整數(shù),對分區(qū)數(shù)量取余分區(qū),hash(分區(qū)表達式),應該整數(shù).
key,使用任意字段,對分區(qū)數(shù)據(jù)量取余分區(qū),不要求是整數(shù)字段。MySQL會依據(jù)給定的字段的值,自己計算整數(shù),去取余!
☆注意:分區(qū)字段要加入到primary key中.
range, 利用給定的范圍條件,進行分區(qū)
list, 利用給定的列表值,進行條件分區(qū)
管理分區(qū)
取余(hash,key),增減分區(qū)數(shù)量即可.
增加分區(qū)數(shù)量
add partition partitions N
增加N個分區(qū).
Alter ?table‘zhangc’add partition partitions 5;
減少數(shù)量(合并分區(qū))
coalesce partition N
減少N個分區(qū).
Alter ?table‘zhangc’coalescepartition 5;