1、選擇合適的數據類型mysql
1.使用能夠存下你的數據的最小的數據類型。
2.使用簡單的數據類型。int要比varchar類型在mysql處理上更簡單。
3.儘量的使用not null定義字段。
4.儘可能少用text類型,非用不可時最好考慮分表。
*使用int來存儲日誌時間,利用FROM_UNIXTINE()(獲得日期),UNIX_TIMESTAMP()(獲得時間戳)兩個函數來進行轉換
*使用bigint來存ip地址,利用INET_ATON(),INET_NTOA()兩個函數來進行轉換sql
2、表的範式和反範式化設計數據庫
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------性能優化
先介紹一下數據庫範式定義,以下數據庫設計
第一範式:當關系模式R的全部屬性都不能在分解爲更基本的數據單位時,稱R是知足第一範式的,簡記爲1NF。知足第一範式是關係模式規範化的最低要求,不然,將有不少基本操做在這樣的關係模式中實現不了。函數
說明:每一列屬性都是不可再分的屬性值,確保每一列的原子性。兩列的屬性相近或類似或同樣,儘可能合併屬性同樣的列,確保不產生冗餘數據。性能
第二範式:若是關係模式R知足第一範式,而且R得全部非主屬性都徹底依賴於R的每個候選關鍵屬性,稱R知足第二範式,簡記爲2NF。學習
說明:每一行的數據只能與其中一列相關,即一行數據只作一件事。只要數據列中出現數據重複,就要把表拆分開來。優化
第三範式:設R是一個知足第一範式條件的關係模式,X是R的任意屬性集,若是X非傳遞依賴於R的任意一個候選關鍵字,稱R知足第三範式,簡記爲3NF。設計
說明:數據不能存在傳遞關係,即沒個屬性都跟主鍵有直接關係而不是間接關係。像:a-->b-->c 屬性之間含有這樣的關係,是不符合第三範式的。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、基於範式優化用法
範式化是指數據庫設計的規範,目前說到範式化通常是指第三設計範式,也就是要求數據表中不存在非關鍵字段對任意候選關鍵字段的傳遞函數依賴則符合第三範式。
不符合第三範式要求的表存在下列問題:
1.數據冗餘:(分類,分類描述)對於每個商品都會進行記錄
2.數據的插入異常
3.數據的更新異常
4.數據的刪除異常
二、基於反範式優化用法
反範式化是指爲了查詢效率的考慮把本來符合第三範式的表適當的增長冗餘,以達到優化查詢的目的,反範式化是一種以空間來換取時間的操做。
這是在學習慕課網《性能優化之MySQL優化》視頻時及參考別人作的記錄整理的。