您好,登錄后才能下訂單哦!
數據庫命名規范
數據庫基本設計規范
數據庫索引設計規范
數據庫字段設計規范
SQL開發規范
數據庫操作規范
對象使用小寫字母并用下劃線分隔;
禁止使用MySQL保留關鍵字;
對象名不要超過32個字符;
PS:其實在oracle11g之前版本,對象都是32位以下,12C好像增大到128.
臨時表以tmp前綴日期后綴;
備份表以bak前綴日期后綴;
存儲相同數據的列名和類型都要一致。
所有表使用InnoDB存儲引擎;
庫和表統一使用UTF8;
MySQL中UTF8下漢字占用3個字節,ASCII碼占用1個字節;
表和字段添加注釋;
盡量控制單表數據量的大小,建議控制500W以內;
PS:單表數據量太大,備份、恢復、修改表結構DDL都有很大問題。
PS:歷史數據歸檔,分庫分表控制單表的數據量大小。
謹慎使用分區表;(這是教案中給的建議)
PS:分區表在物理上分為多個文件,邏輯上表現為一個表,謹慎選擇分區鍵,跨分區查詢效率可能更低,建議采用物理分表的方式管理大數據。
盡量做到冷熱數據分離,減小表的寬度;
PS:MySQL表最多支持4096列。
禁止在表中建立預留字段;
PS:預留字段無法選擇合適的數據類型,對預留字段進行修改,會鎖表影響并發。
禁止在數據庫中存儲圖片、文件等二進制數據;
PS:DB中存儲指向文件服務器的圖片或文件的地址信息。
禁止在線上對數據庫進行壓力測試;
禁止從開發測試環境直連生產庫;
建議單表索引的數量不要超過5個;
每個InnoDB表必須有個主鍵;
PS:不能使用更新頻繁的列作為主鍵,不能使用多列作為主鍵,
不能使用uuid、md5、hash、字符串作為主鍵,
主鍵建議使用自增ID值。
索引列建議:
where從句后的列,包含在group by,order by, distinct中字段的單列索引或組合索引,多表聯合的Join列。
索引列的順序(下面優先級別從上到下由高到低):
選擇性高的列在左側(優先考慮);
字段長度小的列在左側;
使用最頻繁的列在左側。
避免建立冗余和重復索引:
如primary key(id), index(id), unique(id)à重復索引;
如index(a, b, c), index(a, b), index(a)à對a列冗余索引。
對于頻繁的查詢優先考慮適應覆蓋索引:
有點類似oracle的回表操作,直接在索引列上取出Select的列。
避免InnoDB表進行索引的二次查找。
Select a, b from tab where c = xxx;
create index index_name on tab(c, a, b);
可把隨機IO轉為順序IO。
盡量避免使用外鍵:
建立外鍵時,會自動在外鍵上建立索引;
不建議使用外鍵約束,但要在表之間的關聯列上建立索引;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。