下文內(nèi)容主要給大家?guī)鞰ySQL 分區(qū)之 HASH分區(qū)詳解,這里所講到的知識(shí),與書籍略有不同,都是創(chuàng)新互聯(lián)專業(yè)技術(shù)人員在與用戶接觸過程中,總結(jié)出來的,具有一定的經(jīng)驗(yàn)分享價(jià)值,希望給廣大讀者帶來幫助。
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),太康企業(yè)網(wǎng)站建設(shè),太康品牌網(wǎng)站建設(shè),網(wǎng)站定制,太康網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,太康網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
hash分區(qū)是使用主鍵去確保數(shù)據(jù)均勻分布在一個(gè)預(yù)先確定數(shù)字的分區(qū)上. 在range 或list分區(qū)中. 你必須顯式的指定給出的數(shù)據(jù)寫入哪個(gè)分區(qū)或設(shè)置一個(gè)列值去保存; 在hash分區(qū)中. Mysql已經(jīng)為你準(zhǔn)備的. 你只需要指定一個(gè)列的值或表達(dá)式基于列值去hash和分區(qū)的數(shù)字在哪個(gè)分區(qū)表中.
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY HASH(store_id)
PARTITIONS 4;
如果不包含PARTITIONS, 那么默認(rèn)為1個(gè)分區(qū)
使用日期分區(qū)
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY HASH( YEAR(hired) )
PARTITIONS 4;
expr 必須是非恒量的數(shù), 非隨機(jī)的數(shù), 就是數(shù)字是不同的, 但是是可以確定的。
如何確定一條數(shù)據(jù)的分區(qū)呢?先創(chuàng)建一個(gè)表
CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATE)
PARTITION BY HASH( YEAR(col3) )
PARTITIONS 4;
如果你插入一條記錄到T1的col3值為“2005-09-15 ',然后分配其存儲(chǔ)決定如下:
MOD(YEAR('2005-09-01'),4)
= MOD(2005,4)
= 1
線性hash分區(qū)使用一個(gè)線性的2的冪運(yùn)算法則
REATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY LINEAR HASH( YEAR(hired) )
PARTITIONS 4;
給定的一個(gè)表達(dá)式expr,分區(qū)中的記錄存儲(chǔ)在線性散列使用分區(qū)數(shù)n在Num的分區(qū),其中n是根據(jù)下面的算法推導(dǎo):
發(fā)現(xiàn)大于2的數(shù)我們稱這種價(jià)值V下的力量;它可以計(jì)算為:
V = POWER(2, CEILING(LOG(2, num)))
(假設(shè)數(shù)字為13)。然后LOG(2,13)是3.7004397181411。CEILING(3.7004397181411)是4,和V =功率(2,4),這是16。)
N >= num:
在線性哈希分區(qū)的好處是增加,下降,合并,拆分分區(qū)可以更快,有利于在處理含有非常大量的數(shù)據(jù)表(百萬兆字節(jié))。缺點(diǎn)是,與常規(guī)哈希分區(qū)獲得的分布相比,分區(qū)之間不太可能均勻分布數(shù)據(jù).
對(duì)于以上關(guān)于Mysql 分區(qū)之 HASH分區(qū)詳解,如果大家還有更多需要了解的可以持續(xù)關(guān)注我們創(chuàng)新互聯(lián)的行業(yè)推新,如需獲取專業(yè)解答,可在官網(wǎng)聯(lián)系售前售后的,希望該文章可給大家?guī)硪欢ǖ闹R(shí)更新。