目錄
一 自增主鍵 id
二 創建時間、更新時間
三 欄位添加索引
四 資料邏輯洗掉
五 靈活運用資料庫編碼
六 添加 version 欄位
本文主要總結作業這些年來,一些建表的較好的實踐經驗,希望能給你一點點啟發或者幫助,
一 自增主鍵 id
為什么需要自增主鍵id?
從性能、存盤空間兩個角度考慮:
性能:自增主鍵在新增記錄的時候屬于順序寫,磁盤的資料頁利用率高,不會觸發資料頁分裂;與業務相關的欄位做主鍵,容易觸發隨機寫,為了維護索引的有序性,需要移動索引樹頁子節點,容易引發資料頁分裂,
存盤空間:自增主鍵的長度一般要比業務主鍵要小,而非主鍵索引的葉子節點上存盤的都是主鍵的值,顯然,主鍵長度越小,非主鍵索引的葉子節點就越小,非主鍵索引占用的空間也就越小,
因此,從性能和存盤空間兩個角度來考慮,自增主鍵是合理的,
事無絕對,是否可以在建表的時候不創建id?
你還真別說,我還真就遇到過,我們當初這塊有一個學生關注老師表,該表就沒有主鍵id,學生id和老師id作為聯合主鍵id,說實話給學生關注老師表添加自增主鍵id,該欄位也沒啥業務含義,
如果說創建自增主鍵id沒有業務含義,且能接受檔案寫入一定的性能影響,我覺得不加自增id也是可以的,
二 創建時間、更新時間
為什么需要添加創建時間、更新時間呢?
有了創建時間和更新時間,對于資料統計、資料追蹤有很大的意義;其中更新時間天然就是一個版本的概念,便于樂觀鎖的實作,
創建時間、更新時間取哪里的時間呢?WEB 服務器時間?DB 服務器時間?
建議取 WEB 服務器時間(Tomcat,Jboss,Apache),不建議取 DB 服務器時間,還真別說,我就遇到過 DB 服務器時間錯亂,導致線上資料錯誤的問題,都是血淋淋的教訓,
三 欄位添加索引
為什么需要索引?
索引的目的是為了減少查詢次數,提高查詢效率,可以充分的運用覆寫索引、最左前綴原則、唯一索引等對查詢進行優化,
四 資料邏輯洗掉
什么是資料邏輯洗掉?
所謂的邏輯洗掉,就是給資料打上洗掉標簽,
為什么不建議進行物理洗掉?
因為一旦進行物理洗掉之后,資料就沒了,將來查問題、對資料進行追溯都不方便,再說了,我們是有原則的人,從刪庫到跑路的事情,我們堅決不干,
五 靈活運用資料庫編碼
如果說表需要存盤 emoji 等特殊字符,可以使用 utf8mb4 編碼,不需要建議使用 utf8 編碼,
六 添加 version 欄位
version 欄位是給表添加的版本欄位,每次對表進行更新,version 欄位也進行更新,version 欄位是用來實作樂觀鎖的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/246610.html
標籤:其他
上一篇:今日份知識分享:SQL 通配符
下一篇:access資料庫驅動的安裝方法
