數據庫分庫分表?
首先非常感謝在這里能為你解答這個問題,讓我帶領你們一起走進這個問題,現在讓我們一起探討一下。
隨著互聯網技術的成熟,我們的個人信息都存儲在數據庫之中,那么對于程序員的我們,對于數據庫的優化又是怎樣做到的呢?
一、數據切分
根據切分類型,可以分為兩種方式:垂直(縱向)切分和水平(橫向)切分
接下來給大家慢慢介紹:
1、垂直(縱向)切分
常見有垂直分庫和垂直分表兩種。
垂直分庫就是根據業務耦合性,將關聯度低的不同表存儲在不同的數據庫。
垂直分表是基于數據庫中的“列”進行,某個表字段較多,可以新建一張擴展表,將不經常用或字段長度較大的字段拆分出去到擴展表去。
垂直切分的優點:
①解決業務系統層面的耦合,業務清晰
②與微服務的治理類似,也能對不同業務的數據進行分級管理、維護、監控、擴展等。
③高并發場景下,垂直切分一定程度的提升IO、數據庫連接數、單機硬件資源的瓶頸。
當然了,任何事物的出現都有兩面性,不足之處就是:
①部分表無法json,只能通過接口聚合方式解決,提升了開發的復雜度。
②分布式事務處理復雜
③依然存在單表數據量過大的問題
2、水平(橫向)切分
根據表內數據內在的邏輯關系,將同一個表按不同的條件分散到多個數據庫或多個表中,每個表中只包含一部分數據,從而使得單個表的數據量變小,達到分布的效果。
水平切分的優點:
①不存在單庫數據量過大、高并發的性能瓶頸,提升系統穩定性和負載能力
②應用端改造較小,不需要拆分業務模塊
缺點:
①跨分片的事務一致性難以保證
②跨庫的join關聯查詢性能較差
③數據多次擴展難度和維護量極大
綜上,是我個人對于數據庫性能的一些見解,歡迎大家在評論區留下自己的見解。
在以上的分享關于這個問題的解答都是個人的意見與建議,我希望我分享的這個問題的解答能夠幫助到大家。
在這里同時也希望大家能夠喜歡我的分享,大家如果有更好的關于這個問題的解答,還望分享評論出來共同討論這話題。
我最后在這里,祝大家每天開開心心工作快快樂樂生活,健康生活每一天,家和萬事興,年年發大財,生意興隆,謝謝!