數據庫設計(二)(引擎,命名規則,字段類型的選擇比較)

MySQL 經常使用的存儲引擎

    存儲引擎    事務          鎖顆粒                 主要應用            忌用
    MyISAM      不支持     支持併發插入的表級鎖    SELECT,INSERT     讀寫操做頻繁
    MEG_MyISAM  不支持     支持併發插入的表級鎖    分段歸檔,數據倉庫  全局查找過多的場景
    Innodb      支持      支持MVCC的行級鎖         事務處理             無
    Archive     不支持     行級鎖                 日誌記錄,只支持    須要隨即讀取更新刪除
    Ndb cluster 支持          行級鎖             高可用性             大部分應用數據庫

    MyISAM  5.5默認引擎  讀寫高效,寫的時候要鎖表,量大容易阻塞
    Innodb  阻塞更少
    Ndb cluster MySQL集羣
併發


表及字段的命名規則

全部對象命名應該遵循的原則:
    1.可讀性
        使用大寫和小寫來格式化的庫對象名以得到良好的可讀性。
        例如:使用CustAddress而不是custaddress來提升可讀性
        (這裏要注意有些DBMS系統對錶名的大小寫敏感設置)函數

    2.表意性
        對象的名字應該能描述它所標識的對象。
        例如:對於表,表的名稱應該可以體現表中存儲的數據內容;
        對於存儲過程,存儲過程名稱應該可以體現存儲過程的功能。性能

    3.長明原則
        儘量少使用或者不使用縮寫,
        適用於數據庫(DATABASE)名以外的任一對象大數據


字段類型的選擇

    生日:1978-03-01
    Char(10)三 / varchar(20)四 / Datetime 二 /  Int 一spa

    原則:列的數據類型一方面影響數據存儲空間的開銷,
    另外一方面也會影響數據查詢性能。當一個列能夠選擇多種數據類型時,
    應該優先考慮數據類型,其次是日期或者二進制類型,最後是字符類型。
    對於相同級別的數據類型,應該優先選擇佔用空間小的數據類型。日誌

    列類型     |       存儲空間
    TINYINT     1字節
    SMALLINT    2字節
    MEDIUMINT   3字節
    INT         4字節
    BIGINT      8字節
    DATE        3字節
    DATETUNE    8字節
    TIMESTANP   4字節
    CHAR(M)     M字節,1<= M <= 255
    VARCHAR(M)  L+1字節,在此L <= M 和 1 <= M <= 255對象

    以上選擇原則主要是從下面兩個角度考慮:
    1.在對數據進行比較(查詢條件,JOIN條件及排序)操做時:
    一樣的數據,字符處理每每比數字處理慢。
    2.在數據庫中,數據處理以頁爲單位,列的長度越小,利於性能提高。排序

具體選擇:
char/varchar  如何選擇
原則:
    1.若是列中要存儲的數據長度差很少一致的,應該選擇考慮用char;不然考慮用varchar
    2.若是列中的最大數據長度小於50Byte,則通常考慮用char。
    (固然,若是這個列不多用,則基於節省空間和減小I/O的考慮,仍是能夠選擇用varchar)
    3.通常不宜定義大於50Byte的char類型列。
utf8 = 1字符 = 3字節事務

decimal與float 如何選擇
原則:
    1.decimal用於存儲精確數據,而float只能用於存儲非精確數據
    故精確數據只能選擇用decimal類型。
    2.因爲float的存儲空間開銷通常比decimal小(精確到7位小數只須要4個字節,而精確到15位小數只須要8字節)
    故非精確數據優先選擇float類型。

時間類型如何存儲
1.使用int來存儲時間字段的優缺點
    優勢:字段長度比datetime小。
    缺點:使用不方便,要進行函數轉換。
    限制:只能存儲到2018-1-19 11:14:07即2^32爲2147483648
2.須要存儲的時間粒度
    年月日小時分秒周
總結:若是不常常查詢出來展現的,可使用int便可,
若是是須要常常查詢出來判斷或者什麼的仍是存datetime方便,不須要轉換。

    

 

 

                                                                                                        =====未完待續

相關文章
相關標籤/搜索