1. 程式人生 > >02_用戶模型設計

02_用戶模型設計

否則 alt 修改表 包括 post 三範式 http 不同的 div

【用戶實體】

技術分享圖片

【如何把用戶屬性存到表中?——不合理做法】

技術分享圖片

優點:易於數據存取

缺點:數據存在冗余 數據表過寬,會影響修改表結構

[ 數據庫設計範式 ]

  設計範式是數據庫設計的規範,有第一、第二、第三範式。

  數據庫設計最低要滿足第三範式的要求。

[ 第三範式(3NF) ]

  一個表中的列和其他列之間既不包含部分函數依賴關系,也不包含傳遞函數依賴關系,那麽這個表的設計就符合第三範式。

【優化方案】

技術分享圖片

[ 盡量做到冷熱數據分離,減小表的寬度 ]

技術分享圖片

[ 用戶登錄表 ]

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

【MySql分區表】

確認MySql服務器是否支持分區表

  SHOW PLUGINS;

技術分享圖片

【HASH分區】

技術分享圖片

[ 分區表存儲的文件 ]

技術分享圖片

[ 非分區表存儲的文件 ]

技術分享圖片

【HASH分區的特點】

  根據MOD(分區鍵、分區數)的值把數據行存儲到不同的分區中。

  數據可以平均地分布到各個分區中。

  HASH分區的鍵值必須是一個INT類型的值,或者是通過函數可以轉換為INT類型。

技術分享圖片

建立HASH分區可使用的一些函數

技術分享圖片

【按範圍分區(RANGE)】

[ RANGE分區的特點 ]

根據分區鍵值的範圍把數據行存儲到表的不同分區中。

多個分區的範圍要連續,但是不能重疊。

默認情況下使用VALUES LESS THAN屬性,即每個分區不包括指定的那個值。

技術分享圖片

如果沒有 >30000 的那條語句,一旦數據過大會導致這個錯誤:

技術分享圖片

[ 按範圍分區的適用場景 ]

  分區鍵為時間或者時間類型。

  所有查詢中都包括分區鍵。

  定期按分區範圍清理歷史數據。

【LIST分區】

[ LIST分區的特點 ]

  按分區鍵取值的列表進行分區。

  同範圍分區一樣,各分區的列表值不能重復。

  每一行數據必須能找到對應的分區列表,否則插入失敗。

[ 如何建立LIST分區 ]

技術分享圖片

技術分享圖片

【 如何為customer_login_log表分區 】

[ 業務場景 ]

  用戶每次登錄都會記錄customer_login_log日誌

  用戶登錄日誌保存一年,一年後刪除。

[ 選擇哪種分區類型? ]

  使用RANGE分區

  以login_time作為分區鍵

[ 分區後的用戶登錄日誌表 ]

技術分享圖片

【使用分區表的註意事項】

結合業務場景選擇分區鍵,避免跨分區查詢。

對分區表進行查詢最好在WHERE從句中包含分區鍵。

具有主鍵或唯一索引的表,主鍵或唯一索引必須是分區鍵的一部分。

02_用戶模型設計