我目前正在從頭開始設計一個新資料庫,試圖預見隨著規模增加可能出現的任何問題
我現在正在做登錄系統
我有表:(InnoDB,動態)
- 用戶 (新用戶創建的更新,僅存盤 id、email、hash、pepper)
- user_profile (關于用戶修改個人資料資訊的更新 - 它是 ecom,所以不規則)
- user_addresses (用戶添加地址的更新)
- user_reset (密碼恢復嘗試更新)
- user_attempts (密碼嘗試失敗更新)
- user_devices (登錄時更新)
目前,所有表都有一個來自“用戶”表的外鍵 ID——它們可能有也可能沒有自己的 ID,這取決于是否需要。“user_profile”也有來自“user”表的“email”外鍵
我還計劃將來添加來自“用戶”表“id”的外鍵的營銷表,這將做任何事情,從跟蹤流量到監控點擊等。
我的設定會表現最佳嗎?我可以提出任何修改建議以提高性能?即我什至需要外鍵嗎?協助將不勝感激
.
預測您的問題:
為什么要拆分用戶和 user_profile?
我希望在登錄時獲得性能提升......也許不是?老實說,對外鍵不太熟悉,它們似乎總是阻礙多于幫助,但我真的想從一開始就“正確”地做事
定義“規模”
一個網站上有 10 萬用戶,因為如果它達到那個規模,我很確定我可以雇傭一個開發團隊,哈哈
編輯:感謝 -1 沒有任何評論,很高興你比我更了解 MySQL
uj5u.com熱心網友回復:
6 次更新——沒什么大不了的。每秒應該可以處理數百個用戶。
如果這些表中的任何一個是“1:1”,則考慮將它們組合起來。(如果它們是“1:many”,那么單獨的表是合適的。)
索引對性能很重要。AFOREIGN KEY是兩件事:索引和一致性檢查。許多教科書都提倡使用 FK;我通常對等效索引感到滿意。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481549.html
下一篇:連續JOIN和別名:執行順序
