01.數據庫分庫分表-現狀分析

概述

以任務爲例,如果我們需要進行分表,需要關注兩點
1.數據增長量,決定了分表數量
2.查詢以及數據更新場景,決定了按那種方式分表


數據分析

1. 表結構

字段名 類型 描述
id long 主鍵
student_id long 學生id
teacher_id long 教師id
task_name varchar 任務名稱
create_time datetiem 創建時間

2. 日任務量
均值:347348

日期 任務量 日期 任務量
2020-03-01 225925 2020-03-13 387824
2020-03-02 424014 2020-03-14 184733
2020-03-03 428069 2020-03-15 168003
2020-03-04 428821 2020-03-16 515914
2020-03-05 420984 2020-03-17 434955
2020-03-06 367536 2020-03-18 406467
2020-03-07 202577 2020-03-19 385732
2020-03-08 184836 2020-03-20 347008
2020-03-09 430492 2020-03-21 186037
2020-03-10 471406 2020-03-22 179031
2020-03-11 401931 2020-03-23 396231
2020-03-12 387274 2020-03-24 370556

在這裏插入圖片描述
3.月任務量
月均任務數:7901876

月份 任務量
2019年10月 5971953
2019年11月 7248057
2019年12月 9418330
2020年1月 5297569
2020年2月 10926496
2020年3月 8548852


4.月活用戶
月活用戶:225534
用戶月均任務:35

月份 活躍用戶數 月增長量 用戶平均增長量
2019-10 193368 5971953 31
2019-11 214237 7248057 34
2019-12 255763 9418330 37
2020-01 199287 5297569 27
2020-02 262315 10926496 42
2020-03 228235 8779162 38

場景分析

經過與產品確認,該表涉及的場景如下
教師端
1.教師佈置任務
2.教師撤銷任務
3.教師查看任務完成情況

學生端
1.學生查看任務列表
2.學生完成任務

通過使用場景可以看到對錶的操作都可以獲取到當前登錄用戶,顯而易見根據用戶id取模或者範圍分表,但是用戶id落到我們的任務表中確是兩個字段(student_id,teacher_id),考慮到任務數據的高度聚合性,我們根據學校id分組。表中目前不存在學校id,所以需要教師端和學生端操作該表時根據當前用戶獲取到所屬學校id,由於用戶對應school_id相對不變,可以進行redis緩存,添加學校id對性能影響微乎其微。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章