會用數據庫,找大廠工作是遠遠不夠的。
本人2025美團暑期AI面試好幾個MySQL場景問題不會答,已臟面評。遂在此整理學習!
文章目錄
- 美團AI面
- 1.數據庫分片sharding的概念,它有什么優勢和挑戰?
- 優勢
- Sharding 挑戰
- 2. 分庫分表的常見策略有哪些
- a. 取模分片
- b. 范圍分片
- c. 按業務
- d. 按時間分
- e. 混合分片
美團AI面
1.數據庫分片sharding的概念,它有什么優勢和挑戰?
我當時甚至不清楚分片啥意思——其實就是分布式數據庫,將數據拆分到多個數據庫節點上。
每個數據庫節點存儲數據的一個子集,被稱為分片(Shard)。
優勢
-
水平擴展,能夠支持海量數據
-
提高性能:
- 多個數據庫節點可以并行處理查詢和寫入請求,減少單個數據庫的負載。
- 每個分片只存儲部分數據,索引體積更小,提高查詢效率。
- 隔離
單個分片出現故障,不會影響其他分片的數據
Sharding 挑戰
- 怎么分?
需要選擇合適的分片鍵(Shard Key),否則:
數據傾斜:部分分片存儲的數據量過大,導致查詢壓力集中,影響性能。
查詢跨分片:如果查詢涉及多個分片(如 JOIN、GROUP BY),可能導致性能下降。
- 維護
隨著數據增長,可能需要重新分片。數據遷移過程復雜,可能影響在線業務。
需要額外的工具監控各個分片的健康狀況,防止單點瓶頸。
- 跨分片問題
聯合只能在應用層。
跨分片事務,需要引入兩階段提交(2PC)等機制。而且要保證數據一致性。
2. 分庫分表的常見策略有哪些
延續上一個問題了,,
a. 取模分片
num % 3 == 0/1/2
? 數據均勻
? 拓展困難,模數想跳轉只能重新計算。
??????范圍查詢表現不佳
b. 范圍分片
每10W個編號分到一個數據庫中
? 支持數據查詢,擴展方便
? 數據傾斜風險:可能部分連續數據訪問量大,分片壓力大
c. 按業務
常規,不要寬列
d. 按時間分
日志,訂單等
e. 混合分片
先分用戶表,再對其取模分片,再按時間分