mysql结构优化_MySQL优化----数据库结构优化
數據庫結構優化
選擇合適的數據類型
數據類型的選擇,重點在于合適二字,如何確定選擇的數據類型是否合適?
1.使用可以存下你的數據的最小的數據類型。
2.使用簡單的數據類型。Int要比carchar類型在mysql處理上簡單。
3.盡可能的使用not null定義字段。
4.盡量少用text類型,費用不可時最好考慮分表。
-使用int來存儲日期時間,利用FROM_UNIXTIME(),UNIX_TIMESTAMP()兩個函數來轉換
-使用bigint來存IP地址,利用INET_AUTO(),INET_NTOA()兩個函數來進行轉換
表的范式化和反范式化
范式化是指數據庫設計的規范,目前說到范式化一般是指第三設計范式,也就是要求數據表中不存在非關鍵字段對任意候選字段的傳遞函數依賴則符合第三范式
存在以下傳遞函數依賴關系:
(商品名稱)->(分類)->(分類描述)
也就是說存在非關鍵字段”分類描述“對關鍵字段”商品名稱“的傳遞函數依賴。
反范式化是指為了查詢效率的考慮把原符合第三范式的表適當的增加冗余,以達到優化查詢效率的目的,反范式化是一種以空間來換取時間的操作。
表的垂直拆分
所謂的垂直拆分,就是把原來一個有很多列的表拆分成多個表,這解決了表的寬度問題,通常垂直拆分可以按以下原則進行:
1.把不常用的字段單獨存放到一個表中。
2.把大字段獨立存放到一個表中。
3.把經常一起使用的字段放到一起。
表的水平拆分
表的水平拆分是為了解決單表的數據量過大的問題,水平拆分的表每一個表的結構都是完成一致的。
常用的水平拆分方法為:
1.對主鍵id進行hash運算,如果要拆分五個表則使用mod(id,5)取出0-4個值
2.針對不同的hashID把數據存到不同的表中。
挑戰:1.跨分區表進行數據查詢.2.統計及后臺報表操作.
總結
以上是生活随笔為你收集整理的mysql结构优化_MySQL优化----数据库结构优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Settings Bundle为程序
- 下一篇: 017——数组(十七) asort ks