背景:隨著業務規模的不斷擴大,需要選擇合適的方案去應對資料規模的增長,以應對逐漸增長的訪問壓力和資料量。資料庫的擴充套件方式主要包括:業務分庫、主從複製,資料庫分表。讀寫分離的基本原理是將資料庫讀寫操作分散到不同的節點上。讀寫分離的基本實現是:
需要注意的是,這裡用的是「主從集群」,而不是「主備集群」。「從機」的「從」可以理解為「僕從」,僕從是要幫主人幹活的,「從機」是需要提供讀資料的功能的;而「備機」一般被認為僅僅提供備份功能,不提供訪問功能。所以使用「主從」還是「主備」,是要看場景的,這兩個詞並不是完全等同。
將不同業務資料分散儲存到不同的資料庫伺服器,能夠支撐百萬甚至千萬使用者規模的業務,但如果業務繼續發展,同一業務的單錶資料也會達到單台資料庫伺服器的處理瓶頸。例如,**的幾億使用者資料,如果全部存放在一台資料庫伺服器的一張表中,肯定是無法滿足效能要求的,此時就需要對單錶資料進行拆分。
單錶資料拆分有兩種方式:垂直分表和水平分表。示意圖如下:
單錶進行切分後,是否要將切分後的多個表分散在不同的資料庫伺服器中,可以根據實際的切分效果來確定。如果效能能夠滿足業務要求,是可以不拆分到多台資料庫伺服器的,畢竟我們在上面業務分庫的內容看到業務分庫也會引入很多複雜性的問題。分表能夠有效地分散儲存壓力和帶來效能提公升,但和分庫一樣,也會引入各種複雜性:
資料庫分庫分表策略
一 背景 系統剛開始的時候,資料庫都是單庫單錶結構。隨著業務量的增加進行第一次資料庫公升級,根據業務垂直拆分資料庫,這樣多變成多個業務資料庫,每個資料庫裡面還是單錶結構。接下來,繼續隨著業務量的繼續增加,單錶已經很難承受資料量,就要進行分表,這個時候就是,多個業務庫,每個業務庫下對需要分表的表進行分...
資料庫 分庫分表以及切分策略
隨著業務和資料量的增長,單庫的io壓力越來遠大,可將單一資料庫的資料分散到多個資料庫中,來緩解資料庫的訪問壓力。資料庫切分的兩種方式 垂直分庫 根據業務的耦合程度,將關聯度低的表儲存在不同的資料庫中。與微服務的做法相似,每個微服務使用單獨的資料庫。垂直分表 基於資料庫中的列進行。新建一張擴充套件表,...
資料庫分庫分表
1 基本思想之什麼是分庫分表?從字面上簡單理解,就是把原本儲存於乙個庫的資料分塊儲存到多個庫上,把原本儲存於乙個表的資料分塊儲存到多個表上。2 基本思想之為什麼要分庫分表?資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發展,庫中的表會越來越多,表中的資料量也會越來越大,相...