什么是分表和分區(qū)MySql數(shù)據(jù)庫(kù)分區(qū)和分表方法
來(lái)源:易賢網(wǎng) 閱讀:1131 次 日期:2017-02-13 15:40:08
溫馨提示:易賢網(wǎng)小編為您整理了“什么是分表和分區(qū)MySql數(shù)據(jù)庫(kù)分區(qū)和分表方法”,方便廣大網(wǎng)友查閱!

1、為什么要分表和分區(qū)

日常開(kāi)發(fā)中我們經(jīng)常會(huì)遇到大表的情況,所謂的大表是指存儲(chǔ)了百萬(wàn)級(jí)乃至千萬(wàn)級(jí)條記錄的表。這樣的表過(guò)于龐大,導(dǎo)致數(shù)據(jù)庫(kù)在查詢和插入的時(shí)候耗時(shí)太長(zhǎng),性能低下,如果涉及聯(lián)合查詢的情況,性能會(huì)更加糟糕。分表和表分區(qū)的目的就是減少數(shù)據(jù)庫(kù)的負(fù)擔(dān),提高數(shù)據(jù)庫(kù)的效率,通常點(diǎn)來(lái)講就是提高表的增刪改查效率。

2、什么是分表和分區(qū)

2.1 分表

分表是將一個(gè)大表按照一定的規(guī)則分解成多張具有獨(dú)立存儲(chǔ)空間的實(shí)體表,我們可以稱為子表,每個(gè)表都對(duì)應(yīng)三個(gè)文件,MYD數(shù)據(jù)文件,.MYI索引文件,.frm表結(jié)構(gòu)文件。這些子表可以分布在同一塊磁盤上,也可以在不同的機(jī)器上。app讀寫的時(shí)候根據(jù)事先定義好的規(guī)則得到對(duì)應(yīng)的子表名,然后去操作它。

2.2 分區(qū)

分區(qū)和分表相似,都是按照規(guī)則分解表。不同在于分表將大表分解為若干個(gè)獨(dú)立的實(shí)體表,而分區(qū)是將數(shù)據(jù)分段劃分在多個(gè)位置存放,可以是同一塊磁盤也可以在不同的機(jī)器。分區(qū)后,表面上還是一張表,但數(shù)據(jù)散列到多個(gè)位置了。app讀寫的時(shí)候操作的還是大表名字,db自動(dòng)去組織分區(qū)的數(shù)據(jù)。

分區(qū)的主要目的是為了在特定的SQL操作中減少數(shù)據(jù)讀寫的總量以縮減響應(yīng)時(shí)間。

2.3 mysql分表和分區(qū)有什么聯(lián)系呢?

1)、都能提高mysql的性能,在高并發(fā)狀態(tài)下都有一個(gè)良好的表現(xiàn)。

2)、分表和分區(qū)不矛盾,可以相互配合的,對(duì)于那些大訪問(wèn)量,并且表數(shù)據(jù)比較多的表,我們可以采取分表和分區(qū)結(jié)合的方式,訪問(wèn)量不大,但是表數(shù)據(jù)很多的表,我們可以采取分區(qū)的方式等。

3)、分表技術(shù)是比較麻煩的,需要手動(dòng)去創(chuàng)建子表,app服務(wù)端讀寫時(shí)候需要計(jì)算子表名。采用merge好一些,但也要?jiǎng)?chuàng)建子表和配置子表間的union關(guān)系。

4)、表分區(qū)相對(duì)于分表,操作方便,不需要?jiǎng)?chuàng)建子表。

3、分表的幾種方式

3.1 mysql集群

它并不是分表,但起到了和分表相同的作用。集群可分擔(dān)數(shù)據(jù)庫(kù)的操作次數(shù),將任務(wù)分擔(dān)到多臺(tái)數(shù)據(jù)庫(kù)上。集群可以讀寫分離,減少讀寫壓力。從而提升數(shù)據(jù)庫(kù)性能。

3.2 自定義規(guī)則分表

大表可以按照業(yè)務(wù)的規(guī)則來(lái)分解為多個(gè)子表。通常為以下幾種類型,也可自己定義規(guī)則。

Range(范圍)–這種模式允許將數(shù)據(jù)劃分不同范圍。例如可以將一個(gè)表通過(guò)年份劃分成若干個(gè)分區(qū)。

Hash(哈希)–這中模式允許通過(guò)對(duì)表的一個(gè)或多個(gè)列的Hash Key進(jìn)行計(jì)算,最后通過(guò)這個(gè)Hash碼不同數(shù)值對(duì)應(yīng)的數(shù)據(jù)區(qū)域進(jìn)行分區(qū)。例如可以建立一個(gè)對(duì)表主鍵進(jìn)行分區(qū)的表。

Key(鍵值)–上面Hash模式的一種延伸,這里的Hash Key是MySQL系統(tǒng)產(chǎn)生的。

List(預(yù)定義列表)–這種模式允許系統(tǒng)通過(guò)預(yù)定義的列表的值來(lái)對(duì)數(shù)據(jù)進(jìn)行分割。

Composite(復(fù)合模式)–以上模式的組合使用

分表規(guī)則與分區(qū)規(guī)則一樣,在分區(qū)模塊詳細(xì)介紹。

下面以Range簡(jiǎn)單介紹下如何分表(按照年份表)。

假設(shè)表結(jié)構(gòu)有4個(gè)字段:自增id,姓名,存款金額,存款日期

把存款日期作為規(guī)則分表,分別創(chuàng)建幾個(gè)表

2011年:account_2011

2012年:account_2012

……

2015年:account_2015

app在讀寫的時(shí)候根據(jù)日期來(lái)查找對(duì)應(yīng)的表名,需要手動(dòng)來(lái)判定。

什么是分表和分區(qū)MySql數(shù)據(jù)庫(kù)分區(qū)和分表方法

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)