原 交易系統熱點賬戶問題(三)
阿新 • • 發佈:2019-01-10
一、概述
本篇著重介紹一下從資料庫設計層面的熱點賬戶的經驗與實踐,修改餘額方式及業務層面見交易系統熱點賬戶問題(一),交易系統熱點賬戶問題(二)。
二、問題分析
熱點賬戶的效能問題,除了修改餘額方式的優化跟結合業務場景的優化,還有一方面可從DB資源上優化。
打個比方(資料不準確,只是想說明資料庫資源也會是一個可優化的地方):
如果一個實體機資料庫,對單條資料的更新tps可達到1000/s,那對10條不同的資料更新tps也就9500/s,對100條更新的tps就70000/s。因為資料庫這個資源是共享的,而我們真正的業務場景不會是隻有一個賬戶。
因此總結了一下,存在共享資源的部分:
1.資料庫記憶體及CPU
2.資料庫連線
3.表空間(單表資料量)
三、一些方案及實踐
1.資料庫記憶體及CPU
常用方案:分庫
2.資料庫連線
常用方案:
(1)通過壓測設定適當的資料庫最大連線
(2)讀寫分離
(3)加機器
3.表空間
常用方案:分表
分庫分表方案:
分表一般按照賬號進行hash分表,把與賬戶相關的都進行通規則的分表,例如賬戶資訊表,賬戶餘額表,賬戶變動歷史表,賬戶凍結解凍表等等。這樣查詢操作該賬戶的相關資訊都會在一個分庫裡,一個分表裡,是對於連表查詢,事務操作必須的。
四、其他
資料的冷熱分離,賬戶的“冷資料”為賬戶、賬戶主體、開戶時間、賬戶型別。“熱資料”為賬戶餘額、累計金額之類。將兩類資料分別建表儲存,也可提高tps,也降低擴充套件對交易的影響。