數(shù)據(jù)庫(kù)分庫(kù)如何做?
網(wǎng)友解答: 歡迎關(guān)注我,一個(gè)程序員老司機(jī),和你分享編程、運(yùn)營(yíng)、需求等等經(jīng)驗(yàn)和趣事??戳四愕膯?wèn)題描述,應(yīng)該猜測(cè)你是因?yàn)閿?shù)據(jù)量非常龐大的原因,導(dǎo)致了在一個(gè)數(shù)據(jù)庫(kù)里面操作有性能問(wèn)題,于是想到數(shù)
歡迎關(guān)注我,一個(gè)程序員老司機(jī),和你分享編程、運(yùn)營(yíng)、需求等等經(jīng)驗(yàn)和趣事。
看了你的問(wèn)題描述,應(yīng)該猜測(cè)你是因?yàn)閿?shù)據(jù)量非常龐大的原因,導(dǎo)致了在一個(gè)數(shù)據(jù)庫(kù)里面操作有性能問(wèn)題,于是想到數(shù)據(jù)庫(kù)分庫(kù)的操作,因?yàn)閿?shù)據(jù)庫(kù)分庫(kù)操作沒(méi)有一個(gè)固定的公式,每次分庫(kù)都必須要進(jìn)行代碼專(zhuān)業(yè)定制,也就是每次分庫(kù)都需要仔細(xì)研究,然后才能夠開(kāi)始著手代碼的編寫(xiě),不過(guò),雖然沒(méi)有公式,但是還是可以用下面的方法來(lái)進(jìn)行實(shí)踐。
首先
分析你的項(xiàng)目功能,然后總結(jié)出一些常用的功能,并且向后端工程師或者DBA咨詢,這些常用功能對(duì)應(yīng)的數(shù)據(jù)表都有那些,然后將這些常用的數(shù)據(jù)表的表結(jié)構(gòu)和數(shù)據(jù)都轉(zhuǎn)移到新的數(shù)據(jù)庫(kù)里面去,這里有一個(gè)技術(shù)問(wèn)題,就是一定要在用戶非常非常少的情況下進(jìn)行,否則容易導(dǎo)致數(shù)據(jù)丟失。
其次
上面我們已經(jīng)將常用的數(shù)據(jù)表都分表保存到新的數(shù)據(jù)庫(kù)里面去,但是因?yàn)檫@些數(shù)據(jù)表常用,所以你可以根據(jù)需要是否進(jìn)行分表的操作,以免之后又要反攻分表操作。
最后
雖然我們已經(jīng)完成了分庫(kù)的操作,但是現(xiàn)在還有一個(gè)問(wèn)題留給我們,就是應(yīng)用程序端怎么辦?因?yàn)閼?yīng)用程序端之前還在連接之前的數(shù)據(jù)庫(kù),所以如果現(xiàn)在數(shù)據(jù)庫(kù)改了,肯定會(huì)運(yùn)行錯(cuò)誤,所以為了解決這個(gè)問(wèn)題,首先我們必須將應(yīng)用程序端的代碼改了,并且在本地環(huán)境反復(fù)測(cè)試,是否有什么問(wèn)題,然后再上傳到服務(wù)器,等用戶少的時(shí)候,先執(zhí)行分庫(kù)的操作,再執(zhí)行更新應(yīng)用程序代碼的操作。
希望能夠幫到你,如果還有什么疑問(wèn),我們可以在評(píng)論中交流。
網(wǎng)友解答:建議使用mycat進(jìn)行分庫(kù)分表,具體技術(shù)可以到網(wǎng)絡(luò)下載或者回復(fù)交流。這個(gè)是目前測(cè)試過(guò)的kingshard, shardingjdbc,mycat三個(gè)中,效率最高的,隨時(shí)交流