mysql分表疑慮

來源:互聯網
上載者:User
假如現在有張user表,資料量較大,到了需要分表的地步了。
根據使用者ID去分表處理,對10取餘存放。
但是現在有個疑慮,使用者登入時,總不能10張表都去查詢吧。
各位有什麼好的建議或思想,討論討論吧,互相學習,互相進步!!!

sorry沒描述清楚。

user表,id,name,password三個欄位
現在按id已經進行分表了,但是登陸時需要驗證name和password,這個時候怎麼去處理,不應該每張表都要查一遍吧

回複內容:

假如現在有張user表,資料量較大,到了需要分表的地步了。
根據使用者ID去分表處理,對10取餘存放。
但是現在有個疑慮,使用者登入時,總不能10張表都去查詢吧。
各位有什麼好的建議或思想,討論討論吧,互相學習,互相進步!!!

sorry沒描述清楚。

user表,id,name,password三個欄位
現在按id已經進行分表了,但是登陸時需要驗證name和password,這個時候怎麼去處理,不應該每張表都要查一遍吧

看看我的部落格吧

http://edagarli.logdown.com/posts/345292

沒必要直接操作DB,User有關資料放在緩衝即可,查詢快取。

可以根據使用者名稱進行hash啊

MySQL5.5以後可以選擇分區,按月份分區即可。

選擇分表的話,userid按10取餘分10個表單表還是有點大。userid按10取餘如果為1,那就去user_1中取即可,依次類推。

10個表不夠的話可以選擇分區,或者hash出N個表,N由自己的演算法確定。

個人認為按照ID取餘的劃分的話,不利於後續的資料庫的擴充,若10個不夠的時候,需要拓展到15個用戶端是要修改的,可以考慮使用hash的方式比較靠譜
追加:要不然可以在資料庫前加上redis .redis 記錄name和ID的對應關係,應該可以一定程度避免全域尋找的情況

使用者表最好垂直劃分,可以用memcache或者redis來緩衝使用者表,水平切分意義不大

用緩衝吧,因為使用者登入時,你根本不知道使用者ID

不明白你為什麼會對User表來分表。如果單純是舉個例子可能會誤導人。
我試過的分表一般就是按時間來分的。
如果非要用User分表,我的建議是取使用者名稱的拼音首字母,每個字母一個分表。如果嫌太多了就abc放一個表,def放一個表,查詢時候先取首字母,然後確定對應的分表。

如果使用者名稱是英文就簡單得多了。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.