日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

阿里巴巴Mysql规范

發布時間:2023/12/18 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里巴巴Mysql规范 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL數據類型選擇

在MySQL中,選擇正確的數據類型,對于性能至關重要。一般應該遵循下面兩步:
(1)確定合適的大類型:數字、字符串、時間、二進制;
(2)確定具體的類型:有無符號、取值范圍、變長定長等。
在MySQL數據類型設置方面,盡量用更小的數據類型,因為它們通常有更好的性能,花費更少的硬件資源。并且,盡量 把字段定義為NOT NULL,避免使用NULL。
1、數值類型


優化建議

  • 如果整形數據沒有負數,如ID號,建議指定為UNSIGNED無符號類型,容量可以擴大一倍。
  • 建議使用TINYINT代替ENUM、BITENUM、SET。
  • 避免使用整數的顯示寬度(參看文檔最后),也就是說,不要用INT(10)類似的方法指定字段顯示寬度,直接用 INT。
  • DECIMAL最適合保存準確度要求高,而且用于計算的數據,比如價格。但是在使用DECIMAL類型的時候,注意 長度設置。
  • 建議使用整形類型來運算和存儲實數,方法是,實數乘以相應的倍數后再操作。
  • 整數通常是最佳的數據類型,因為它速度快,并且能使用AUTO_INCREMENT。

2、日期和時間

優化建議

  • MySQL能存儲的最小時間粒度為秒。
  • 建議用DATE數據類型來保存日期。MySQL中默認的日期格式是yyyy-mm-dd。
  • . 用MySQL的內建類型DATE、TIME、DATETIME來存儲時間,而不是使用字符串。
  • 當數據格式為TIMESTAMP和DATETIME時,可以用CURRENT_TIMESTAMP作為默認(MySQL5.6以后), MySQL會自動返回記錄插入的確切時間。
  • TIMESTAMP是UTC時間戳,與時區相關。
  • DATETIME的存儲格式是一個YYYYMMDD HH:MM:SS的整數,與時區無關,你存了什么,讀出來就是什么。
  • 除非有特殊需求,一般的公司建議使用TIMESTAMP,它比DATETIME更節約空間,但是像阿里這樣的公司一般 會用DATETIME,因為不用考慮TIMESTAMP將來的時間上限問題。
  • 有時人們把Unix的時間戳保存為整數值,但是這通常沒有任何好處,這種格式處理起來不太方便,我們并不推薦 它。

3、字符串


優化建議

  • 字符串的長度相差較大用VARCHAR;字符串短,且所有值都接近一個長度用CHAR。
  • CHAR和VARCHAR適用于包括人名、郵政編碼、電話號碼和不超過255個字符長度的任意字母數字組合。那些 要用來計算的數字不要用VARCHAR類型保存,因為可能會導致一些與計算相關的問題。換句話說,可能影響到計 算的準確性和完整性。
  • 盡量少用BLOB和TEXT,如果實在要用可以考慮將BLOB和TEXT字段單獨存一張表,用id關聯。
  • BLOB系列存儲二進制字符串,與字符集無關。TEXT系列存儲非二進制字符串,與字符集相關。
  • BLOB和TEXT都不能有默認值。

PS:INT顯示寬度
我們經常會使用命令來創建數據表,而且同時會指定一個長度,如下。但是,這里的長度并非是TINYINT類型存儲的最大長度,而是顯示的最大長度。

CREATE TABLE `user`( `id` TINYINT(2) UNSIGNED );

這里表示user表的id字段的類型是TINYINT,可以存儲的最大數值是255。所以,在存儲數據時,如果存入值小于等于 255,如200,雖然超過2位,但是沒有超出TINYINT類型長度,所以可以正常保存;如果存入值大于255,如500,那么 MySQL會自動保存為TINYINT類型的最大值255。
在查詢數據時,不管查詢結果為何值,都按實際輸出。這里TINYINT(2)中2的作用就是,當需要在查詢結果前填充0時, 命令中加上ZEROFILL就可以實現,如:

`id` TINYINT(2) UNSIGNED ZEROFILL

這樣,查詢結果如果是5,那輸出就是05。如果指定TINYINT(5),那輸出就是00005,其實實際存儲的值還是5,而且存 儲的數據不會超過255,只是MySQL輸出數據時在前面填充了0。
換句話說,在MySQL命令中,字段的類型長度TINYINT(2)、INT(11)不會影響數據的插入,只會在使用ZEROFILL時有 用,讓查詢結果前填充0。

總結

以上是生活随笔為你收集整理的阿里巴巴Mysql规范的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。