分库分表产生的问题,及注意事项
1. ? 分庫分表維度的問題
假如用戶評論了某個視頻,需要將評論記錄保存取來,如果按照用戶的緯度分表,則每個用戶的評論記錄都保存在同一表中,所以很快很方便的查找到某用戶的評論情況,但是某視頻被評論的情況則很有可能分布在多張表中,查找起來比較麻煩。反之,按照視頻ID維度分表,可以很方便的查找到此視頻的評論情況,但要查找到某人的評論記錄比較麻煩。
所以常見的解決方式有:
? ? a.通過掃表的方式解決,此方法基本不可能,效率太低了。
? ? b.記錄兩份數據,一份按照用戶緯度分表,一份按照視頻ID維度分表。
? ? c.通過搜索引擎解決,但如果實時性要求很高,又得關系到實時搜索。
? ? 我們采用的是記錄雙份:有一個userId--belongId-commentId三個int類型的表。這個基于userId取模。而Comment基于belongId(通常是videoId)取模
2. ? 聯合查詢的問題
聯合查詢基本不可能,因為關聯的表有可能不在同一數據庫中。
3. ? 避免跨庫事務
避免在一個事務中修改db0中的表的時候同時修改db1中的表,一個是操作起來更復雜,效率也會有一定影響。
4. ? 盡量把同一組數據放到同一DB服務器上
? ? ?例如網站評論,視頻評論uid 取摸和comment取摸一致的數據庫放在一起,這樣,用戶的評論和某些視頻的評論都放在一起;
例如將賣家a的商品和交易信息都放到db0中,當db1掛了的時候,賣家a相關的東西可以正常使用。也就是說避免數據庫中的數據依賴另一數據庫中的數據。
本文轉自 位鵬飛 51CTO博客,原文鏈接:http://blog.51cto.com/weipengfei/1333870,如需轉載請自行聯系原作者
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的分库分表产生的问题,及注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mydate97设置时间
- 下一篇: 浮点数及缺陷