1. 程式人生 > >原 交易系統熱點賬戶問題(三)

原 交易系統熱點賬戶問題(三)

一、概述

本篇著重介紹一下從資料庫設計層面的熱點賬戶的經驗與實踐,修改餘額方式及業務層面見交易系統熱點賬戶問題(一)交易系統熱點賬戶問題(二)

二、問題分析

熱點賬戶的效能問題,除了修改餘額方式的優化跟結合業務場景的優化,還有一方面可從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,也降低擴充套件對交易的影響。