鍍金池/ 問答/數(shù)據(jù)庫  網(wǎng)絡安全/ 大家是如何匯總分表數(shù)據(jù)的?

大家是如何匯總分表數(shù)據(jù)的?

比如評論表,我們分成了 100 張表,按照 userid 哈希算法分,那么后臺管理要顯示評論列表,總不能聯(lián)合查詢 100 張表,這種情況大家是如何做的?

回答
編輯回答
安若晴

我提個曲線救國的方法,就別按userid分表了,怪累的,直接根據(jù)評論時間按月分表,我們的經(jīng)驗是Mysql的話每張表不超過2000萬條數(shù)據(jù)就行,這樣匯總起來就方便多了,后臺管理唯一需要注意的就是pagination的問題。

就算是拋磚引玉了,希望能幫到你。

更新:flc1125提到了負載的問題,我頂多能想到加redis緩存,還想問問這個評論的主要查詢業(yè)務是啥?是展示某個文章的最近評論?

2017年9月22日 13:39
編輯回答
野橘

我覺得還有一個方法,就是建一張評論總表,這張表的字段不必跟分表一致,最關(guān)鍵的是要評論 id,和創(chuàng)建時間,后臺管理就可以讀取這張總表,評論的詳情字段去分表查詢。

比如一頁 50 條記錄,最多 50 次另外的查詢,分別去分表查詢詳情數(shù)據(jù)展現(xiàn)出來,雖然多一些查詢,但是在后臺管理系統(tǒng)用不會造成很大壓力,

2017年3月12日 05:29
編輯回答
離夢

新建一張表,每隔一段時間更新這張表,比如頁面一次加載三十條評論,那么就一次查出三十條數(shù)據(jù),等到時候頁面載入時從這里取。

2018年5月23日 08:30
編輯回答
維她命

首先你的表拆分法是對的。其次增加一個同步表。該表的數(shù)據(jù)保留最近X天的評論數(shù)據(jù),數(shù)據(jù)來源,由其他100個表用聯(lián)合組成;數(shù)據(jù)操作由定時或mq方式同步過去。該表僅用于后臺使用(或并發(fā)量小的業(yè)務)

2018年7月18日 00:05