鍍金池/ 問(wèn)答/Java  GO  數(shù)據(jù)庫(kù)  HTML/ mysql單機(jī)內(nèi)部分庫(kù)

mysql單機(jī)內(nèi)部分庫(kù)

目前項(xiàng)目使用的是單機(jī)mysql,內(nèi)部也只有一個(gè)庫(kù),現(xiàn)在想要根據(jù)不同的子業(yè)務(wù)在單機(jī)內(nèi)部拆分成多個(gè)庫(kù),避免后續(xù)子業(yè)務(wù)拓展但仍操作同一個(gè)大庫(kù)的情況,但是現(xiàn)在有以下幾個(gè)疑問(wèn):

1、單機(jī)內(nèi)部拆分成多庫(kù)之后是否會(huì)對(duì)原來(lái)的sql操作造成比較大的影響,比如單庫(kù)內(nèi)的跨表查詢變成了多庫(kù)跨表,還有事務(wù)操作也有可能需要跨庫(kù)。

2、單機(jī)內(nèi)部分庫(kù)之后是否有助于提高穩(wěn)定性,會(huì)不會(huì)出現(xiàn)一個(gè)庫(kù)掛掉,另外的庫(kù)是好的,整體單機(jī)表現(xiàn)正常的情況?

3、單機(jī)內(nèi)部分庫(kù)之后還是會(huì)受制于單機(jī)本身的性能瓶頸吧,分庫(kù)后能提高IO嗎?

4、分庫(kù)之后還有哪些缺點(diǎn)?

回答
編輯回答
情已空

分庫(kù)確實(shí)有很多問(wèn)題,但是現(xiàn)在大多數(shù)互聯(lián)網(wǎng)企業(yè)由于業(yè)務(wù)數(shù)據(jù)龐大基本上都會(huì)使用分庫(kù)分表。分庫(kù)分表最根本的原因就是解決單機(jī)負(fù)載壓力,把一臺(tái)機(jī)器上的壓力分散到多臺(tái)服務(wù)器上去。
分庫(kù)也確實(shí)有一些問(wèn)題需要考慮:
1.分庫(kù)規(guī)則和策略(分片原則)。什么樣的數(shù)據(jù)進(jìn)如DB1中,什么樣的數(shù)據(jù)進(jìn)入DB2中
2.跨庫(kù)事物
3.分布式業(yè)務(wù)主鍵如何設(shè)計(jì)
4.庫(kù)表和庫(kù)表之間如果需要join
5.分頁(yè)的問(wèn)題
6.多數(shù)據(jù)源整合的問(wèn)題
其實(shí),單機(jī)分庫(kù)只是解決了表的壓力,并沒(méi)有解決服務(wù)器的壓力。
現(xiàn)在也有很多開源組件支持分庫(kù)分表,可以參考下mycat sharding-jdbc等等一些開源項(xiàng)目。

歡迎加Q群交流討論Java技術(shù) 696883318

2018年9月6日 06:34
編輯回答
孤影

看樓主的意思是應(yīng)該公司的業(yè)務(wù)拆分,不同的業(yè)務(wù)對(duì)應(yīng)不同的數(shù)據(jù)庫(kù),不是應(yīng)對(duì)大數(shù)據(jù)存儲(chǔ)而進(jìn)行的分庫(kù)分表;那就是業(yè)務(wù)重構(gòu)了,sql、代碼、架構(gòu)什么的肯定都是重來(lái)了,為什么還考慮對(duì)以前的sql有影響呢?
如果是只是業(yè)務(wù)分庫(kù),業(yè)務(wù)數(shù)據(jù)量又不是很大的話,性能什么的都不是暫時(shí)需要考慮的問(wèn)題,一般都是數(shù)據(jù)量到達(dá)一定的量級(jí)才會(huì)考慮分庫(kù)分表,現(xiàn)在最關(guān)鍵的還是完善好系統(tǒng)架構(gòu),好的架構(gòu)對(duì)后期的維護(hù)和擴(kuò)展真的很重要。

還是覺(jué)得樓主重點(diǎn)問(wèn)的是業(yè)務(wù)拆分,提問(wèn)分庫(kù)很容易造成誤解,看題目還以為是針對(duì)大數(shù)據(jù)量的分庫(kù)分表。純屬個(gè)人觀點(diǎn)!

2018年4月30日 07:52
編輯回答
下墜
1、sql操作需要帶庫(kù)名
2、跨庫(kù)事務(wù)即內(nèi)部xa
3、單機(jī)多庫(kù)與單庫(kù)一樣,一掛全掛
4、不做額外處理的話,IO性能并不會(huì)有什么變化
2017年12月19日 07:04