High Scaling Websites Structure Learning Notes 大型網站架構學習筆記

資料類型

越小越好

要使用能夠用來正確儲存資料的最小類型的資料型態,要確保不會低估要儲存的資料大小,因為當資料可以確定用比較少的資料去儲存的時候,所使用的空間也會更少,所需要的索引空間也會越少,取得資料所需要的計算時間也會越短。

在可以用CHAR(20)去儲存資料時,就不要用CHAR(200)

在可以用VARCHAR(20)去儲存資料時,就不要用VARCHAR(200)

在可以用TINYINT去儲存資料時,就不要用INT

在可以用TEXT去儲存資料時,就不要用LONGTEXT

在可以用BLOB去儲存資料時,就不要用LONGBLOB

越簡單越好

整數(INT)> 固定字串(CHAR)> 變動字串(VARCHAR)> 文字(TEXT)

越簡單的資料類型,資料庫所需要用來建立索引的效率越好,因為資料類型越複雜代表資料的排列組合越多,所以需要更大的索引及計算去取得資料

在可以用整數(INT)去儲存資料時,就不要用固定字串(CHAR)

在可以用固定字串(CHAR)去儲存資料時,就不要用變動字串(VARCHAR)

在可以用變動字串(VARCHAR)去儲存資料時,就不要用文字(TEXT)

盡量不使用NULL

若非必要儲存NULL的資料,否則要盡可能的把資料欄位設定為NOT NULL,資料庫很難最佳化有NULL資料欄位的查詢,可以NULL的資料欄位需要更多的儲存空間,資料庫還需要對其進行特殊處理,而當有NULL資料欄位使用索引(INDEX)的時候,每一條的索引紀錄必需要額外紀錄資料,導致查詢時索引的效率降低。

若真的要儲存NULL,在不影響原有的資料的情況下,可以考慮用0特殊值...等等之類的值去代替,可以用來區別是否為NULL

結論

一切的資料類型都只能看自己應用的需求去決定,如果沒辦法還是要用比較複雜的資料類型,那還是必須要用,資料的完整性比任何的東西都重要多了,效率就想辦法用增加機器或者是優化資料表結構...等等的其他方式去達成,不要為了效率增加而強迫使用特定的資料類型,這樣反而是因噎廢食。

參考資料