在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/數(shù)據(jù)庫  網(wǎng)絡(luò)安全/ mysql分庫分表的疑問

mysql分庫分表的疑問

最近在研究分庫分的方案,沒什么經(jīng)驗,有疑問向大家請教一下。
比如一個訂單表,有字段:下單人id,商品id,店鋪id,下單時間等

在做分表時,首先考慮按下單人id做分割,這樣買家查詢數(shù)據(jù)會更快,但是賣家一般按店鋪或者商品查詢訂單會不理想,還有客服、管理員等其他場景下的使用更會有這樣的問題。

但如果按商品id做分割,買家查詢會不理想。所以想向大家請教一下,應(yīng)該怎么處理?

回答
編輯回答
妖妖

分庫分表是解決查詢效率的問題。一點小想法,可不可以這么來理解
1.對查詢速度最敏感是用戶,優(yōu)先考慮以用戶ID來分割,優(yōu)化前端用戶的查詢速度
2.店鋪ID和訂單ID另建一張冗余表來建立關(guān)聯(lián)
3.訂單和商品是多對多關(guān)系,可以以商品ID來分表,并建冗余表關(guān)聯(lián)
4.可不可以引入其他技術(shù)來實現(xiàn),比如mongodb、E Search

2018年3月1日 13:50
編輯回答
女流氓

我的想法:
1.下單人id就是user_id咯,user表肯定放到主庫里面的,而商品表似乎沒有想到對應(yīng)的shard_nodes那我也放到主庫中去。
2.我理解的店鋪應(yīng)該是和用戶關(guān)聯(lián)的,那就可以用user_id做shard_nodes將其存到分庫中區(qū),然后用es做分詞.
3.下單既然是和用戶有關(guān)的行為,那同樣用user_id做shard_nodes將其存到放分庫中去

那么效果就來了,既然是分庫,那肯定不會存在單個shard庫中對應(yīng)表的數(shù)據(jù)量過于膨脹(比如下單表,如果全存到主庫中,假設(shè)下單積累量有100w那一次查詢就是100w的過濾操作,而如果根據(jù)user_id垂直分割,shard_routing到20個分庫中,那平均均攤的分庫也就5w下單數(shù)據(jù)量,這查詢肯定快很多)

綜上,去分庫獲取對應(yīng)user_id的用戶的下單數(shù)據(jù),然后拿著其余字段去商品/店鋪等等取數(shù)據(jù)。
like 圖片描述

2018年6月8日 20:33