在專案中使用mysql資料庫,所有的增刪改查操作都在主庫處理,隨著查詢訪問量的增加,單庫處理的壓力驟增,為了防止主庫故障,使用一主多從的方式,通過讀寫分離,把所有的查詢處理都放到從伺服器上,減少單點故障導致整個服務掛掉的情況。
使用mysql的com.mysql.jdbc.replicationdriver驅動
構造不同的資料庫連線池,在service層通過判斷方法的讀寫型別,讀方法使用從資料庫連線池,寫方法使用主資料庫連線池
使用阿里的mycat或360的atlas來實現分庫分表,讀寫分離和負載均衡等處理。
(1)mysql配置資料庫連線資訊
url=jdbc:mysql:replication:
username=*****
password=*****
driver=com.mysql.jdbc.replicationdriver
(2)設定事務不自動提交,並且事務唯讀
使用spring的事務處理比較簡單,使用註解@transactional,把readonly設定true,或者寫乙個aop切面,統一設定需要的方法為可讀模式。
@transactional(isolation=isolation.default,propagation = propagation.required,readonly = true)
(3)測試是否真的實現了讀寫分離
使用命令show full processlist檢視從資料庫是否有指定伺服器的連線資訊。
一主多從,從主庫向從庫進行資料同步,修改從資料庫的指定資料,查詢修改的資料來確認資料是否來自從庫。
實現思想:構建乙個主庫的連線池1,構建乙個從庫的連線池2,使用spring aop對service層的處理做乙個切面,系統定義以query,get和find等開頭的方法為讀處理,使用連線池2,從從庫中獲取資料;其他的開頭的方法預設使用連線池1。 資料庫讀寫分離
隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...
資料庫讀寫分離
隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...
資料庫讀寫分離
隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策 略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share ...