1. 程式人生 > >想要Freestyle?先要遵守 MySQL 這十大鐵律!

想要Freestyle?先要遵守 MySQL 這十大鐵律!

mysql開發行為規範

在工作中作為DBA的我們,可能也會需要面對開發人員各種 Freestyle 的要求,但是他們是否知道在操作數據庫的時候,需要註意哪些事項呢?


今兒帶著大家簡單聊聊 MySQL 數據庫的開發行為規範,十大鐵的紀律。對DBA老鐵們是一種幫助,對開發人員也是一種學習。


1. 創建的表要使用 innodb 存儲引擎表

現在基本上大部分業務都是 innodb 存儲引擎,MySQL 8.0 開始,徹底不再使用 myisam。每張表都要包含一個自增的主鍵 id。


2. 數據類型的選擇上,要秉著越簡單越好,越小越好的原則。

建議使用 int 來存儲 ipv4 的類型,可以通過函數轉換。金錢類的字段也可以存儲為 int 類型,用分做單位就可以了。

時間類型可以采用 datetime,它比 tiemstamp 可用範圍大,存儲空間也從原來的 8 字節,降到了 5 字節,性能上也不錯。

mysql> select inet_aton(‘192.168.56.132‘);
+-----------------------------+
| inet_aton(‘192.168.56.132‘) |
+-----------------------------+
|          3232249988 | 
+-----------------------------+

mysql> select inet_ntoa(3232249988);
+-----------------------+
| inet_ntoa(3232249988) |
+-----------------------+
| 192.168.56.132        | 
+-----------------------+
1 row in set (0.00 sec)


3. 庫名、表名、字段名必須使用小寫字母,采用“_“分割

MySQL 數據庫中,通過參數 lower_case_table_names 來區分表名的大小寫 默認為 0,代表大小寫敏感。如果是 1,大小寫不敏感,以小寫存儲。


4. 不建議使用 ENUM 類型,使用 TINYINT 來代替。

也不建議使用大數據類型的字段如text或者blob出現在業務表中。


5. 表字符集使用 utf8,必要時可申請使用 utf8mb4 字符集。

它的通用性比 gbk,latin1 都要好。utf8 字符集存儲漢字占用 3 個字節,如果遇到表情存儲的要求,就可以使用 utf8mb4


6. select 查詢表的時候只需要獲取必要的字段,避免使用 select *。

這樣可以減少網絡帶寬消耗,還有可能利用到覆蓋索引


7. 所有字段定義中,默認都加上 not null 約束,避免出現 null。

在對該字段進行 select count() 統計計數時,可以讓統計結果更準確,因為值為 null 的數據,不會被計算進去的。


8. 創建索引的時候不要在低基數列上建立索引,像 sex、status 這種字段上面。

要通過索引的選擇性來判斷 select count(distinct col1)/count(*) from table_name; 越接近 1,證明選擇性越高,越適合創建索引。一般情況下,單表索引數量不要超過 4-5 個範圍。


9. SQL語句中,盡量避免出現 or 子句

這種判斷的子句可以讓程序自行完成,不要交給數據庫判斷。也要避免使用 union,盡量采用 union all,減少了去重和排序的工作。


10. 時時做好監控工作,經常對線上 sql 語句,進行在線捕獲進行分析。

可以利用 percona-toolkit 工具。


目前先寫這麽多,歡迎大家及時補充,其實好多工作都需要 DBA 和開發人員密切配合。新的業務要上線,DBA 就要參與到業務中,配合開發一起建表建模。我們只有一個目的,就是更舒服得工作,掙更多的錢,那為啥不能改變一下我們不好的工作習慣呢。工作中不是你想怎麽著,就怎麽著!繼續努力吧!




更多精彩文章:

MySQL數據庫“十宗罪”(十大經典錯誤案例)

數據庫優化之降龍十八掌




我的在線課程:MySQL 體系結構深入剖析及實戰 DBA 視頻課程

課程目標

通過對 MySQL 體系結構深入剖析講解,配合生產環境備份恢復,主從復制,高可用集群架構和優化等實戰演練,讓同學們可以對 MySQL 數據庫有個由淺到深的認識。最後的課程部分還會對面試題總結進行講解,有利於同學們可以找到理想的 MySQL DBA 的工作。

適用人群

剛接觸MySQL數據庫的同學,有一定運維經驗的運維人員,想提高自己MySQL數據庫水平的DBA。



本文出自 “張甦的博客” 博客,轉載請與作者聯系!

想要Freestyle?先要遵守 MySQL 這十大鐵律!