mysql設計規範一

來源:互聯網
上載者:User

標籤:記憶體   path   設計   方法   pre   inno   origin   資料庫   設計規範   

原文地址:http://www.jianshu.com/p/33b7b6e0a396主鍵

表中每一行都應該有可以唯一標識自己的一列(或一組列)。

一個顧客可以使用顧客編號列,而訂單可以使用訂單ID,僱員可以使用僱員ID 或 僱員社會保險號。

主鍵(primary key) 一列(或一組列),其值能夠唯一區分表中的每個行。
唯一標識表中每行的這個列(或這組列)稱為主鍵。沒有主鍵,更新或刪除表中特定行很困難,因為沒有安全的方法保證只設計相關的行。

雖然並不總是都需要主鍵,但大多數資料庫設計人員都應保證他們建立的每個表有一個主鍵,以便於以後資料操縱和管理

表中的任何列都可以作為主鍵,只要它滿足一下條件:

 1、任何兩行都不具有相同的主索引值 2、每個行都必須具有一個主索引值(主鍵列不允許NULL值)

主索引值規範:這裡列出的規則是MySQL本身強制實施的。

主鍵的最好習慣:
除MySQL強制實施的規則外,應該堅持的幾個普遍認為的最好習慣為:

 1、不更新主鍵列的值 2、不重用主鍵列的值 3、不在主鍵列中使用可能會更改的值(例如,如果使用一個名字作為主鍵以標識某個供應商,應該供應商合并和更改其名字時,必須更改這個主鍵)

總之:不應該使用一個具有意義的column(id 本身並不儲存表 有意義資訊) 作為主鍵,並且一個表必須要有一個主鍵,為方便擴充、松耦合,高可用的系統做鋪墊。

非常感謝 @pathbox、 @est、@hooooopo 同學的提醒。主鍵的作用,在於索引。

無特殊需求下Innodb建議使用與業務無關的自增ID作為主鍵

InnoDB引擎使用叢集索引,資料記錄本身被存於主索引(一顆B+Tree)的葉子節點上。這就要求同一個葉子節點內(大小為一個記憶體頁或磁碟頁)的各條資料記錄按主鍵順序存放,因此每當有一條新的記錄插入時,MySQL會根據其主鍵將其插入適當的節點和位置,如果頁面達到裝載因子(InnoDB預設為15/16),則開闢一個新的頁(節點)

1、如果表使用自增主鍵,那麼每次插入新的記錄,記錄就會順序添加到當前索引節點的後續位置,當一頁寫滿,就會自動開闢一個新的頁。如所示:


 

這樣就會形成一個緊湊的索引結構,近似順序填滿。由於每次插入時也不需要移動已有資料,因此效率很高,也不會增加很多開銷在維護索引上。

2、 如果使用非自增主鍵(如果社會安全號碼或學號等),由於每次插入主鍵的值近似於隨機,因此每次新紀錄都要被插到現有索引頁得中間某個位置:


 

此時MySQL不得不為了將新記錄插到合適位置而移動資料,甚至目標頁面可能已經被回寫到磁碟上而從緩衝中清掉,此時又要從磁碟上讀回來,這增加了很多開銷,同時頻繁的移動、分頁操作造成了大量的片段,得到了不夠緊湊的索引結構,後續不得不通過OPTIMIZE TABLE來重建表並最佳化填充頁面。

在使用InnoDB儲存引擎時,如果沒有特別的需要,請永遠使用一個與業務無關的自增欄位作為主鍵。

mysql 在頻繁的更新、刪除操作,會產生片段。而含片段比較大的表,查詢效率會降低。此時需對錶進行最佳化,這樣才會使查詢變得更有效率。



清水大王
連結:http://www.jianshu.com/p/33b7b6e0a396
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

mysql設計規範一

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.