全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)技術(shù)文章正文

MySQL數(shù)據(jù)庫(kù)如何分區(qū)、分表?什么時(shí)候考慮使用分區(qū)?

更新時(shí)間:2021-03-05 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

MySQL數(shù)據(jù)庫(kù)怎樣分區(qū)分表?

(1)問(wèn)題分析:

考官主要想考察學(xué)員對(duì)MySQL數(shù)據(jù)的理解和拓展,有沒(méi)有深入的去理解過(guò)數(shù)據(jù)庫(kù),有沒(méi)有在項(xiàng)目開(kāi)發(fā)中對(duì)數(shù)據(jù)庫(kù)做過(guò)優(yōu)化。

(2)核心答案講解:

分區(qū):就是把一張表的數(shù)據(jù)分成N個(gè)區(qū)塊,在邏輯上看最終只是一張表,但底層是由N個(gè)物理區(qū)塊組成的

分表:就是把一張表按一定的規(guī)則分解成N個(gè)具有獨(dú)立存儲(chǔ)空間的實(shí)體表。系統(tǒng)讀寫(xiě)時(shí)需要根據(jù)定義好的規(guī)則得到對(duì)應(yīng)的字表明,然后操作它分表可以通過(guò)三種方式:MySQL集群、自定義規(guī)則(根據(jù)一定的算法(如用hash的方式,也可以用求余(取模)的方式)讓用戶(hù)訪問(wèn)不同的表。)和merge存儲(chǔ)引擎。

分區(qū)有四類(lèi):

RANGE 分區(qū):基于屬于一個(gè)給定連續(xù)區(qū)間的列值,把多行分配給分區(qū)。

LIST 分區(qū):類(lèi)似于按RANGE分區(qū),區(qū)別在于LIST分區(qū)是基于列值匹配一個(gè)離散值集合中的某個(gè)值來(lái)進(jìn)行選擇。

HASH分區(qū):基于用戶(hù)定義的表達(dá)式的返回值來(lái)進(jìn)行選擇的分區(qū),該表達(dá)式使用將要插入到表中的這些行的列值進(jìn)行計(jì)算。這個(gè)函數(shù)可以包含MySQL 中有效的、產(chǎn)生非負(fù)整數(shù)值的任何表達(dá)式。

KEY 分區(qū):類(lèi)似于按HASH分區(qū),區(qū)別在于KEY分區(qū)只支持計(jì)算一列或多列,且MySQL 服務(wù)器提供其自身的哈希函數(shù)。必須有一列或多列包含整數(shù)值。

(3)問(wèn)題擴(kuò)展:

什么時(shí)候考慮使用分區(qū)?

①一張表的查詢(xún)速度已經(jīng)慢到影響使用的時(shí)候;②sql經(jīng)過(guò)優(yōu)化;③數(shù)據(jù)量大;④表中的數(shù)據(jù)是分段的;⑤對(duì)數(shù)據(jù)的操作往往只涉及一部分?jǐn)?shù)據(jù),而不是所有的數(shù)據(jù)。

分區(qū)解決的問(wèn)題:

①主要可以提升查詢(xún)效率。

什么時(shí)候考慮分表

①一張表的查詢(xún)速度已經(jīng)慢到影響使用的時(shí)候;②sql經(jīng)過(guò)優(yōu)化;③數(shù)據(jù)量大;④當(dāng)頻繁插入或者聯(lián)合查詢(xún)時(shí),速度變慢。

分表解決的問(wèn)題:

①分表后,單表的并發(fā)能力提高了,磁盤(pán)I/O性能也提高了,寫(xiě)操作效率提高了;②查詢(xún)一次的時(shí)間短了;③數(shù)據(jù)分布在不同的文件,磁盤(pán)I/O性能提高;④讀寫(xiě)鎖影響的數(shù)據(jù)量變小;⑤插入數(shù)據(jù)庫(kù)需要重新建立索引的數(shù)據(jù)減少。

(4)結(jié)合項(xiàng)目中使用:

無(wú)

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!