基于給定的分區(qū)個(gè)數(shù),將數(shù)據(jù)分配到不同的分區(qū),HASH分區(qū)只能針對(duì)整數(shù)進(jìn)行HASH,對(duì)于非整形的字段只能通過(guò)表達(dá)式將其轉(zhuǎn)換成整數(shù)。表達(dá)式可以是mysql中任意有效的函數(shù)或者表達(dá)式,對(duì)于非整形的HASH往表插入數(shù)據(jù)的過(guò)程中會(huì)多一步表達(dá)式的計(jì)算操作,所以不建議使用復(fù)雜的表達(dá)式這樣會(huì)影響性能。
MYSQL支持兩種HASH分區(qū),常規(guī)HASH(HASH)和線性HASH(LINEAR HASH) 。
一、常規(guī)HASH
常規(guī)hash是基于分區(qū)個(gè)數(shù)的取模(%)運(yùn)算。根據(jù)余數(shù)插入到指定的分區(qū)
CREATE TABLE tbhash ( id INT NOT NULL, store_id INT ) PARTITION BY HASH(store_id) PARTITIONS 4 ;