色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

數據庫分庫分表時的冗余是怎么回事

錢諍諍2年前43瀏覽0評論
數據庫分庫分表時的冗余是怎么回事?

先說句題外話,做到需要分庫分表的業務量,應該有專門的人員來對數據庫進行設計了,不應該是由開發人員單方面決定,所以貴公司的團隊結構需要稍微優化一下了。

第一個問題,冗余。所謂冗余,是指同一項數據存儲有多份存儲。在數據庫設計中,經常利用冗余來針對性的對業務進行優化:1、各種集群結構,不管是主從結構還是主-主結構,數據會復制到多個數據庫實例中,達到分擔壓力和高可用的目的;2、不同的表中存儲相同的字段,主要是針對一些高頻率的查詢業務,避免join操作對性能造成損害。冗余最大的問題是一致性問題,由于數據存儲在多個地方,一旦改動需要保證所有的副本都能同步改動。

第二個問題,擴容。分庫分表的擴容,核心是路由方案。以比較通用的hash路由為例,假設擴容前的路由方案為:DB_ID = HASH(KEY) MOD 2,現在需要擴容,擴容的路由方案應該怎么定?一個基本原則就是不要造成數據的遷移。如果新方案為DB_ID=HASH(KEY) MOD 3,那么勢必會造成之前的兩個庫里的數據均勻的散落在3個新庫中,造成巨大的遷移成本,而使用DB_ID=HASH(KEY) MOD 4這個方案,將兩個節點擴容為4個節點,則會簡單很多,只需要將之前DB_ID為1的數據復制到DB_ID3,將DB_ID0的數據復制到DB_ID2,即可保證正確性,在進行簡單的刪除操作即可。

答得比較簡單,希望對題主能有所幫助。