分表原則:避免跨表操作,讓業務的操作盡可能在一個表中完成,如果要跨表,只能說明分法不合理,如果真的有些業務場景要跨表,可以做副本冗余。
垂直分表:
一般就是將主鍵+常用字段列 放在一張表,主鍵+不常用列 放在另外一張表。
根絕自己業務需求,區分常用字段和不常用字段來分表。盡量避免join和union查詢,如果這樣的操作很多,說明分法不合理。
水平分表:
常見的幾種水平分表法:
- 按時間分:新聞類,朋友圈動態,微博最新動態等關注實時的,可以按月份划分,一個月一張表。
- 按區間分:每個表的自增id,按id的區間來划分,如1~1000一張表,1001~2000一張表。涉及到刪除數據,一般刪除數據做狀態修改,只是物理刪除。
- 按hash值分:表的唯一值如用戶id ,對用戶id取模,然后MD5處理用戶id,截取多少位做字段存儲唯一值。
