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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

《高性能MySQL》之选择优化的数据类型

發(fā)布時間:2023/12/10 数据库 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《高性能MySQL》之选择优化的数据类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1:前言

? ? mysql支持的數(shù)據(jù)類型非常多,選擇正確的數(shù)據(jù)類型對于獲得高性能至關(guān)重要

2:幾個原則

  • ? ?更小的通常更好---滿足存儲需要的情況下使用最小的數(shù)據(jù)類型,因?yàn)檎加酶〉拇疟P,內(nèi)存和cpu緩存,并且處理需要的cpu周期也更少。舉個例子:我們經(jīng)常使用status 為 0,1 表示狀態(tài),這里使用TINYINT(-128-127)類型已經(jīng)足夠,不必使用int。
  • ? 簡單就好---簡單數(shù)據(jù)類型的操作通常需要使用更小的CPU周期,整型比字符操作代價更低。
  • ? 盡量避免Null--- 以前我們表中包含很多為NULL的列,即使不需要保存Null,通常情況下最好指定為Not NULL,除非真的需要。原因:1:優(yōu)化需要,對于查詢包含為NULL的列,會使索引,索引統(tǒng)計和值比較復(fù)雜,NULL會使用更多的存儲空間,當(dāng)NULL列被索引時需要一個額外的字節(jié)。2:程序問題,如果你domain中的變量沒有定義成包裝類,查詢時不能將NULL保存到數(shù)據(jù)。所以這里同時建議程序中使用Integer 代替 int 在domain中。

3:整數(shù)類型

? mysql支持一下幾種類型整數(shù):TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT。分別8,16,24,32,64為存儲空間,范圍-2(N-1)-2(N-1)-1,其中N是存儲空間的位數(shù)。 ? ?整數(shù)還有UNSINGED屬性,表示不允許負(fù)值,可以使正數(shù)的上限提高一倍,但是存儲空間一樣,性能一樣。 ? ?整數(shù)計算一般使用64位BIGINT整數(shù),所以在代碼中接收類似count(id)的結(jié)果時,要定義成BigInteger,不然會報錯, ? ?對于存儲和計算來說,INT(1)和INT(20)是一樣的。

4:實(shí)體類型

? ?實(shí)體是帶有小數(shù)部分的數(shù)字。我們不僅可以用與存儲小數(shù)部分,還可以使用DECIMAL存儲比BIGINT(能表示20位,18..)還大的整數(shù)。之前看到公司老系統(tǒng)中使用DECIMAL來表示數(shù)字類型一直不明白,可能存在這個原因。 ? ? ?在需要對小數(shù)進(jìn)行精確計算時,才使用DECIMAL來表示(mysql5.0以上)

5:字符串類型

? varchar和char在不同的存儲引擎中存儲方式不一樣。

? ?varchar

? ?varchar類型用于存儲可變長字符串,比定長類型更節(jié)省空間,它僅使用必要的空間,如varchar(20) "abc" 僅使用3個字節(jié),但是它會再拿出1或2個字節(jié)來記錄字符串長度(大于255字節(jié)為2個),存儲時會保留末尾空格,對于varchar來說最好的策略是只分配真正需要的空間。

? ?使用情況:如果字符串列的最大長度比平均長度大很多;列的更新很少,所以碎片不是問題;使用了UTF-8這樣的復(fù)雜字符集。


? ? Char

? ? char 類型是定長,會刪除所有的末尾空格,會根據(jù)需要采用空格進(jìn)行填充以方便比較。
使用情況:適合存儲很短的字符串,或者所有值都接近一個長度,比如char 非常適合存儲密碼的MD5值,因?yàn)樗且粋€定長。我們可以使用char(1) 來存儲只有Y和N的值,它只需要一個字節(jié),而如果使用varchar(1)會占用兩個字節(jié)。對于經(jīng)常改變的數(shù)據(jù),char也更好。

6:日期和時間類型

datetime 能保存大范圍的值,從1001-9999年,精度為秒,格式Y(jié)YYYMMDDHHMMSS的整數(shù)中,和時區(qū)無關(guān) ? ? ?

? ? ? ?timestamp

?保存了從1970年1月1日午夜的秒數(shù),到2038年,顯示的值和時區(qū)有關(guān)系。

總結(jié)

以上是生活随笔為你收集整理的《高性能MySQL》之选择优化的数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。