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