分庫分表實(shí)戰(zhàn),在這里,我以用戶id維度進(jìn)行操作。假定提前調(diào)研,每個(gè)用戶某項(xiàng)操作的平均記錄為10條記錄
? ? ? ? 首先,確定每個(gè)庫容納100張表,每張表容納100w數(shù)據(jù)。
? ? ? ? 其次,計(jì)算每張表容納的用戶數(shù)量 = 100w / 10 = 10w
? ? ? ? 再次,計(jì)算庫的容量,假定未來兩年用戶量會增長5000w,那么需要5000w / 10w = 500張表,而每個(gè)庫存放100張表,因此需要5個(gè)庫
? ? ? ? 最好,我們在操作數(shù)據(jù)庫的時(shí)候,需要根據(jù)用戶id確定數(shù)據(jù)在哪個(gè)庫,哪個(gè)表,以此來拼接替換sql
? ? ? ? select * from User{nDbIndex}.tbUser{nTableIndex} ?
? ??????nDbIndex = lUserId / 10w /5
????????nTableIndex = lUserId / 10w