分庫分表
當數據量非常大時,就需要通過分庫分表的方式進行壓力分攤,避免數據庫訪問壓力過大
分庫分表的前提:
業務數據達到一定量級:單表數據量達到1000w或20g
優化解決不了性能問題
分庫分表策略
垂直拆分
垂直分庫
以表為依據,根據業務將不同表拆分到不同庫中
eg:根據微服務拆分數據庫成多個數據庫
按照業務對數據進行分級管理
在高并發下提高磁盤的IO和數據庫連接數
垂直分表
以字段為依據,根據字段屬性將不同字段拆分到不同表中
拆分規則:
將大文本的字段或者是不常用的字段拆出來單獨成為一個表
冷熱數據分離
減少IO的過度爭搶,兩個表不會互相影響
水平拆分
水平分庫
將一個庫的數據分到多個庫中(表相同,但數據不同)
查詢數據時根據數據路由
路由規則:
根據id節點取模
或按照id的范圍進行路由
解決了單庫大數量,高并發的問題
提高了系統的穩定性和可用性
水平分表
將一個表的數據拆到多個表中(可以在同一個庫內)
查詢數據時根據數據路由