a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數(shù)據(jù)庫 > 文庫 > 正文

數(shù)據(jù)庫數(shù)據(jù)類型優(yōu)化教程步驟

2024-09-07 22:12:54
字體:
供稿:網(wǎng)友
  數(shù)據(jù)庫類型的選擇對數(shù)據(jù)庫性能也有一點(diǎn)的影響,現(xiàn)在我們就來分析一下,數(shù)據(jù)庫類型優(yōu)化主要從三部分來說:1.數(shù)據(jù)類型優(yōu)化 2.數(shù)據(jù)庫設(shè)計優(yōu)化 3.SQL查詢優(yōu)化.
 
  本文不含數(shù)據(jù)庫服務(wù)器配置優(yōu)化,僅從應(yīng)用程序設(shè)計的角度考慮數(shù)據(jù)庫的設(shè)計優(yōu)化方案.
 
  主要從三部分來說:1.數(shù)據(jù)類型優(yōu)化 2.數(shù)據(jù)庫設(shè)計優(yōu)化 3.SQL查詢優(yōu)化,細(xì)心的觀眾會覺得少了點(diǎn)什么,索引,對當(dāng)然得有索引,索引忒重要,這個最后說.
 
  這樣既有宏觀設(shè)計層面的,還有微觀數(shù)據(jù)類型層面的,這就是俗話說的:上得了廳堂,下得了廚房,斗得了小三...
 
  如果數(shù)據(jù)庫遇到了性能瓶頸,通常需要從這4方面總體設(shè)計,而不是孤立的單方面考慮.
 
  一、數(shù)據(jù)類型優(yōu)化
 
  1.原則:
 
  1)越小越好
 
  例如能用tinyint解決就不要使用smallint,能用int就不要用float,能用varchar(10)就不要使用 varchar(100),因?yàn)樾〉臄?shù)據(jù)類型占用更少的磁盤空間,內(nèi)存和CPU資源,消耗更少的CPU周期,varchar(10)和 varchar(100)雖然占用的存儲空間一樣,但是前者更有優(yōu)勢,后面介紹varchar類型時會提到,所以絕對是越小越好,當(dāng)然得能夠滿足存儲需求,這好像是廢話,誰還不知道呢,哪有這么傻x的架構(gòu)師,有嗎?沒有嗎?這個還真有,好像工作中有些所謂的架構(gòu)師真的很xx,實(shí)際工作中遇到較x的,笑笑就行了。
 
  2)越簡單越好
 
  簡單數(shù)據(jù)類型的操作需要消耗更少的CPU周期,例如,操作整型比操作字符串類型的代價更低。
 
  2.整型
 
  tinyint(8)->smallint(16)->mediumint(24)->int(32)->bigint(64),括號中的數(shù)字是使用多少位存儲空間。
 
  另外整型有unsigned屬性,比如tinyint unsigned可以存儲0~255,而tinyint可以存儲-128~127.
 
  3.實(shí)數(shù)
 
  FLOAT和DOUBLE是不精確類型,DECIMAL是精確類型,由于CPU直接支持浮點(diǎn)計算所以FLOAT類型比DECIMAL更快,在數(shù)據(jù)量較大的時候,可以使用BIGINT替代DECIMAL,例如將金額乘以一百萬,然后將結(jié)果存儲在BIGINT中,可以提高計算速度.
 
  4.字符串類型
 
  CHAR和VARCHAR,這個地球人都知道varchar是變長的,char是定長的,就不說了.
 
  varchar使用1到2位來描述實(shí)際字符串的長度。varchar可能會造成碎片問題,比如定義為varchar(1000),初始插入的時候插入了1個字符,后來將這條記錄update到1000,這時候可能會造成當(dāng)前頁存儲不下,就會造成頁分裂,產(chǎn)生一個新頁來存儲這部分?jǐn)?shù)據(jù),雖然一般數(shù)據(jù)庫會預(yù)留一些額外的頁空間,但是這種仍然不能完全避免.
 
  char存儲時會刪除末尾空格,如果存儲一個很短的定長字符,比如Y/N,char僅需一位,而varchar還額外需要一位來存儲字符串的長度.
 
  varchar(10)和varchar(1000)一樣嗎?存儲空間一樣,但是varchar(1000)需要消耗更多的內(nèi)存,尤其使用臨時表排序時會更加明顯,所以越小越好這個原則是不會錯的.
 
  5.大字段BLOB和TEXT
 
  他們都用于存儲一些大字段,例如大的文件內(nèi)容,圖片內(nèi)容等等,他們的區(qū)別是BLOB存儲的是二進(jìn)制數(shù)據(jù),而TEXT有字符集和排序規(guī)則,一般可以用記事本打開的存儲為TEXT,其他的存儲為BLOB.
 
  6.日期和時間
 
  MySQL支持的最小時間粒度到秒,這個有點(diǎn)粗,1秒對于計算機(jī)來說已經(jīng)很長了.
 
  TIMESTAMP存儲的是從1970年開始到當(dāng)前的時間戳,DATETIME則存儲實(shí)際的時間值.TIMESTAMP的空間效率更高一些,但是TIMESTAMP只能存儲到2038年,如果你的系統(tǒng)打算用到這之后,就果斷放棄它吧.
 
  7.主鍵
 
  1)要保證表與表之間的關(guān)聯(lián)字段數(shù)據(jù)類型一致,如果不一致到生產(chǎn)環(huán)境上遇到了性能問題再改,可不是鬧著玩的.
 
  2)主鍵使用整型性能更高.
 
  如果使用字符串會導(dǎo)致:
 
  a.插入性能差,因?yàn)椴迦胄枰S護(hù)索引,如果使用隨機(jī)字符串,比如java中的uuid,由于是無序的,所以要維護(hù)索引到不同的位置,這會有較大的性能消耗.
 
  b.SELECT會較慢,因?yàn)檫壿嬌舷噜彽男袝植荚诖疟P和內(nèi)存的不同地方.
 
  c.隨機(jī)會導(dǎo)致緩存命中率降低,因?yàn)榫彺孢M(jìn)來的數(shù)據(jù)雖然在物理上相鄰,但是邏輯上并不相鄰,所以會導(dǎo)致更多的不命中,導(dǎo)致頻繁刷新緩存,失去了緩存的意義,反而加大了消耗.

(編輯:武林網(wǎng))

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 一区二区三区视频免费在线观看 | 日韩专区一区二区 | 性少妇xxxx片| 亚洲精品三级 | 一本大道久久a久久精二百 羞羞视频在线观免费观看 国产第一区在线观看 | 91久久国产综合久久91精品网站 | 国产高潮呻吟久久渣男片 | 精品www | av中文字幕在线播放 | 欧美日韩精品 | 九一视频在线播放 | 国产高清一区二区 | 超碰在线观看免费版 | 亚洲国产成人精品女人 | 欧美日韩黄色一级片 | 国产精品日韩在线 | 亚洲一级黄色片子 | 夜夜躁狠狠躁夜躁麻豆 | 午夜精品网站 | 国产精品毛片一区二区 | 日韩欧美第一页 | 国产一区二区毛片 | 青青草视频免费观看 | 欧美一区精品 | 激情欧美日韩一区二区 | 在线观看v片 | 四虎最新紧急入口 | 91精品国产综合久久久蜜臀粉嫩 | 99九九久久| 狠狠草视频 | 成人黄色片在线观看 | 久久亚洲二区 | 九九免费观看全部免费视频 | 久久精品欧美一区二区三区不卡 | 在线视频a| 中文字字幕在线观看 | 欧美手机在线 | 久久久成人精品视频 | 黄网站涩免费蜜桃网站 | 欧美视频在线免费 | 在线色网站 |