SQL Server/MySQL數(shù)據(jù)庫讀寫分離最全詳解(看這篇就夠了)
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
什么是讀寫分離讀寫分離就是將數(shù)據(jù)庫分為主從庫,一個(gè)主庫(Master)用于寫數(shù)據(jù),多個(gè)從庫(Slaver)進(jìn)行輪詢讀取數(shù)據(jù)的過程。 主從庫之間通過某種通訊機(jī)制進(jìn)行數(shù)據(jù)的同步,是一種常見的數(shù)據(jù)庫架構(gòu)。
為什么要讀寫分離呢?因?yàn)閿?shù)據(jù)庫的“寫”,比如:10000條數(shù)據(jù)到oracle可能要3分鐘,操作是比較耗時(shí)的。 但是數(shù)據(jù)庫的“讀”,比如:從oracle讀10000條數(shù)據(jù)可能只要5秒鐘,相對(duì)應(yīng)寫就沒有這么耗時(shí)。 所以讀寫分離解決的是:把數(shù)據(jù)庫的寫入與查詢,在服務(wù)器上分開來,從而可以極大的提升查詢效率。
什么時(shí)候要讀寫分離?數(shù)據(jù)庫不一定要讀寫分離,但是如果程序使用數(shù)據(jù)庫較多時(shí),而更新少,查詢多的情況下就可以考慮使用。 這樣可以減少數(shù)據(jù)庫壓力,提高性能,當(dāng)然數(shù)據(jù)庫也有其它優(yōu)化方案,比如:分庫分表,或是搜索引擎等都是解決方法。
讀寫分離的原理讀寫分離基本的原理是讓主數(shù)據(jù)庫處理事務(wù)性增、改、刪操作(INSERT、UPDATE、DELETE),而從數(shù)據(jù)庫處理SELECT查詢操作。 讀寫分離是為了將請(qǐng)求流量分散到不同的數(shù)據(jù)庫節(jié)點(diǎn)上,將寫入數(shù)據(jù)的請(qǐng)求分發(fā)到主數(shù)據(jù)庫,讀取數(shù)據(jù)的請(qǐng)求分發(fā)到從數(shù)據(jù)庫,從數(shù)據(jù)可以有多臺(tái),即一主多從。 整體架構(gòu)如下圖: 從上圖可看出,有個(gè)關(guān)鍵技術(shù)就是主從復(fù)制,每次寫入數(shù)據(jù)的時(shí)候,需要將主服務(wù)器數(shù)據(jù)復(fù)制到從服務(wù)器中,用來確保數(shù)據(jù)一致性。 下面我以MySQL的主從復(fù)制為例,如下圖所示: 主從復(fù)制
讀寫分離總結(jié)在實(shí)際的生產(chǎn)環(huán)境中,對(duì)數(shù)據(jù)庫的讀和寫都在同一個(gè)數(shù)據(jù)庫服務(wù)器中,是不能滿足實(shí)際需求的,無論是在安全性、高可用性還是高并發(fā)等各個(gè)方面都是完全不能滿足實(shí)際需求的。 因此,通過主從復(fù)制的方式來同步數(shù)據(jù),再通過讀寫分離來提升數(shù)據(jù)庫的并發(fā)負(fù)載能力,即可以解決可用性的問題,又解決了數(shù)據(jù)庫性能問題。 -end- 該文章在 2024/1/23 12:20:44 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |