業(yè)務(wù)場(chǎng)景
我們都知道一個(gè)數(shù)據(jù)庫(kù)的連接數(shù)是有上限的,當(dāng)我們的業(yè)務(wù)系統(tǒng)變得繁雜時(shí),如果都存儲(chǔ)在一個(gè)數(shù)據(jù)庫(kù)中,那么勢(shì)必會(huì)因?yàn)閿?shù)據(jù)庫(kù)達(dá)到瓶頸;此時(shí)我們就需要對(duì)數(shù)據(jù)庫(kù)中表進(jìn)行拆分,將其分散到多個(gè)數(shù)據(jù)庫(kù)中去。
數(shù)據(jù)庫(kù)拆分原則:就是指根據(jù)系統(tǒng)業(yè)務(wù)實(shí)際情況,將原本放在一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)分散放到多個(gè)數(shù)據(jù)庫(kù)中去,減少單庫(kù)的負(fù)載。
舉個(gè)例子:比如說(shuō)現(xiàn)在我們有機(jī)票和火車票的業(yè)務(wù),起初由于業(yè)務(wù)量小因此都放在一個(gè)數(shù)據(jù)庫(kù)里面得,隨著業(yè)務(wù)量的上漲(假如并發(fā)到達(dá)3000,MySQL數(shù)據(jù)庫(kù)最大支持2000),此時(shí)數(shù)據(jù)庫(kù)已經(jīng)不堪重負(fù);即使你加入緩存組件這些依然解決不了問(wèn)題(因?yàn)槟愕木彺鏀?shù)據(jù)始終來(lái)源于數(shù)據(jù)庫(kù))。
那么就可以按照業(yè)務(wù)情況進(jìn)行數(shù)據(jù)拆分,將機(jī)票業(yè)務(wù)的信息和火車票業(yè)務(wù)的信息分別放到一個(gè)數(shù)據(jù)庫(kù)中去,這樣就將原來(lái)一個(gè)庫(kù)的壓力分散到2個(gè)庫(kù)上去了。
垂直拆分
垂直切分:簡(jiǎn)單的說(shuō)就是將數(shù)據(jù)庫(kù)中的各個(gè)表,依據(jù)業(yè)務(wù)情況將一些表放在一個(gè)數(shù)據(jù)庫(kù)中,一些表放在另外一個(gè)數(shù)據(jù)庫(kù)中,
比如商城這些的數(shù)據(jù)庫(kù)端按照業(yè)務(wù)垂直拆分:按照業(yè)務(wù)訂單數(shù)據(jù)庫(kù)、用戶數(shù)據(jù)庫(kù)、商品數(shù)據(jù)庫(kù)等進(jìn)行拆分。

水平拆分
水平拆分:簡(jiǎn)單來(lái)說(shuō)就是將一張表的數(shù)據(jù)分別存儲(chǔ)到多個(gè)數(shù)據(jù)庫(kù)中,所以一個(gè)庫(kù)中只保存一部分?jǐn)?shù)據(jù);

數(shù)據(jù)庫(kù)拆分原則

- 優(yōu)先考慮使用緩存來(lái)降低對(duì)數(shù)據(jù)庫(kù)的讀操作。
- 再考慮讀寫分離,降低數(shù)據(jù)庫(kù)寫操作。
- 最后開始數(shù)據(jù)拆分,切分模式: 首先垂直(縱向)拆分、再次水平拆分。
- 首先考慮按照業(yè)務(wù)垂直拆分。
- 再考慮水平拆分:先分庫(kù)(設(shè)置數(shù)據(jù)路由規(guī)則,把數(shù)據(jù)分配到不同的庫(kù)中);可以通過(guò)mycat來(lái)處理
- 最后再考慮分表,單表拆分到數(shù)據(jù)1000萬(wàn)以內(nèi)。