天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

給數(shù)據(jù)減肥 讓MySQL數(shù)據(jù)庫(kù)跑的更快

  在數(shù)據(jù)庫(kù)優(yōu)化工作中,使數(shù)據(jù)盡可能的小,使表在硬盤(pán)上占據(jù)的空間盡可能的小,這是最常用、也是最有效的手段之一。因?yàn)榭s小數(shù)據(jù),相對(duì)來(lái)說(shuō)可以提高硬盤(pán)的讀寫(xiě)速度,并且在查詢(xún)過(guò)程中小表的內(nèi)容處理時(shí)所占用的系統(tǒng)資源比較少。同理,如果在比較小的列上設(shè)置索引的話(huà),其索引所占用的資源也會(huì)比較少。那么數(shù)據(jù)庫(kù)管理員該如何給自己的數(shù)據(jù)減肥呢?對(duì)此筆者有如下幾個(gè)建議。

  建議一:空值并不一定不占用空間

  在這里筆者先給大家掃盲一下。有些數(shù)據(jù)庫(kù)管理員,認(rèn)為空值不會(huì)占用系統(tǒng)資源,其實(shí)這是一個(gè)錯(cuò)誤的認(rèn)識(shí)。他們?cè)跀?shù)據(jù)庫(kù)設(shè)計(jì)時(shí),不喜歡將字段的屬性設(shè)置為NOT NULL。而讓用戶(hù)根據(jù)自己的需要來(lái)輸入數(shù)據(jù)。筆者認(rèn)為,這種做法對(duì)于數(shù)據(jù)庫(kù)的性能是不利的。

  筆者的意見(jiàn)是,如果有可能的話(huà),盡量將列設(shè)置為NOT NULL,即不允許有空值。這么做的話(huà),可以加快后續(xù)處理的速度,同時(shí)從數(shù)據(jù)存儲(chǔ)來(lái)看還可以使得每列節(jié)省一位,從而達(dá)到數(shù)據(jù)減肥的目的。在實(shí)際工作中,如果有些情況不需要用戶(hù)輸入數(shù)據(jù)時(shí),還可以通過(guò)默認(rèn)字段來(lái)達(dá)到非空的目的。如在薪資系統(tǒng)中,可以將用戶(hù)的工作年限默認(rèn)設(shè)置為0,而不是空白。當(dāng)然,如果確實(shí)需要NULL的話(huà),也沒(méi)有辦法。但是作為數(shù)據(jù)庫(kù)工程師來(lái)說(shuō),要盡量避免使用NULL值。

  建議二:使用盡量小的數(shù)據(jù)類(lèi)型

  數(shù)據(jù)類(lèi)型的大小也會(huì)影響到基礎(chǔ)表的大小。如對(duì)于MEDIUMINT和INT兩個(gè)數(shù)據(jù)類(lèi)型,其都可以用來(lái)保存整數(shù)型的數(shù)據(jù),只是其能夠保存的精度不同而已。但是從存儲(chǔ)數(shù)據(jù)的角度來(lái)看,前者所需要的存儲(chǔ)空間要比后者節(jié)省25%左右。為此在能夠使用MEDIUMINT的情況下,就不要使用INT。

  另外在定義數(shù)據(jù)長(zhǎng)度的時(shí)候,在滿(mǎn)足需求的情況下,也要盡量的短。如現(xiàn)在薪資考核系統(tǒng)中有員工編碼一個(gè)字段。如果企業(yè)員工編碼已經(jīng)確定,有五位字符構(gòu)成。那么在定義字段時(shí),只需要定義5個(gè)字符的長(zhǎng)度。這不僅可以縮小存儲(chǔ)空間,而且還可以起到一定的數(shù)據(jù)校對(duì)功能。當(dāng)用戶(hù)輸入的編碼長(zhǎng)度超過(guò)5位時(shí),數(shù)據(jù)將無(wú)法保存。

  雖然說(shuō)保存某個(gè)數(shù)據(jù)可以有很多數(shù)據(jù)類(lèi)型可以選擇,也可以定義比較大的字符位數(shù)。但是選擇盡量小的數(shù)據(jù)類(lèi)型,可以幫助降低數(shù)據(jù)存儲(chǔ)空間,達(dá)到數(shù)據(jù)減肥的目的。從而進(jìn)一步提升數(shù)據(jù)庫(kù)的性能。

  建議三:索引與數(shù)據(jù)表大小的關(guān)系

  筆者在文章一開(kāi)頭就談到過(guò),如果對(duì)于比較小的列設(shè)置索引,那么索引也將占用比較少的資源??梢?jiàn),索引與數(shù)據(jù)表大小也有緊密的聯(lián)系。在合適的地方、合適的時(shí)機(jī)設(shè)置合適的索引,也可以實(shí)現(xiàn)對(duì)數(shù)據(jù)減肥的目的。

  如通常情況下,每張數(shù)據(jù)表可能會(huì)有多個(gè)索引,但是主索引往往只有一個(gè)。為此對(duì)于每張表的主索引應(yīng)該考慮盡量的短小精悍。這可以幫助數(shù)據(jù)庫(kù)更快的進(jìn)行識(shí)別。

  再如盡量對(duì)前綴進(jìn)行索引。如現(xiàn)在有一張表,需要對(duì)某個(gè)列設(shè)置索引。而這個(gè)列有一個(gè)特點(diǎn),即在頭幾個(gè)字符上有唯一的前綴。如果存在這種情況的話(huà),那么緊緊索引這個(gè)前綴,而不是全部,效果會(huì)更好。在MySQL數(shù)據(jù)庫(kù)中,支持對(duì)一個(gè)字符列的最左邊部分創(chuàng)建一個(gè)索引。這也就是說(shuō),數(shù)據(jù)庫(kù)會(huì)將某個(gè)字段根據(jù)一定的規(guī)則拆分為前后兩個(gè)部分。拆分后前面一部分的數(shù)據(jù)如果能夠保持唯一,那么就只需要對(duì)前面一部分設(shè)置索引即可,而不需要對(duì)整個(gè)字段的數(shù)據(jù)設(shè)置索引。這無(wú)疑可以縮小索引所占用的資源,實(shí)現(xiàn)減肥的目的。更短的索引,能夠提供更快的查詢(xún)速度。因?yàn)樗鼈兯加玫挠脖P(pán)空間更少,而且他們將在索引緩存中保存更多的訪問(wèn)。從而降低硬盤(pán)的搜索次數(shù),提高查詢(xún)的效率。

  最后需要注意的就是,索引不能夠?yàn)E用。使用索引確實(shí)可以提高數(shù)據(jù)的處理能力,但是索引同時(shí)也會(huì)帶來(lái)額外的開(kāi)銷(xiāo)。只有這個(gè)收益大于開(kāi)銷(xiāo)時(shí),使用索引才能夠提升數(shù)據(jù)庫(kù)的性能。否則的話(huà),則會(huì)起到相反的效果。如某個(gè)表需要進(jìn)行快速的存儲(chǔ),如果在這個(gè)表上設(shè)置過(guò)多的索引,索引就會(huì)起到副作用。對(duì)此筆者建議,如果主要通過(guò)搜索列的組合來(lái)存取一個(gè)表,那么最好對(duì)他們只設(shè)置一個(gè)索引。當(dāng)然,這個(gè)索引部分應(yīng)該是日常工作中最常用的列。在不得已的情況下,如果需要使用多個(gè)索引的話(huà),那么最好能夠以更多的副本使用列來(lái)獲得更好的索引壓縮。從而降低因?yàn)槭褂昧硕鄠€(gè)索引而增加的資源消耗。

  建議四:在需要“豐滿(mǎn)”的地方還是不能夠節(jié)省

  一個(gè)女人,該瘦的地方要瘦,該豐滿(mǎn)的地方要豐滿(mǎn)。其實(shí)數(shù)據(jù)庫(kù)也是如此。能夠節(jié)省硬盤(pán)空間的地方,就要節(jié)省。而不能夠節(jié)省的地方,則不能夠?yàn)榱藴p肥而將其精簡(jiǎn)下來(lái)。有時(shí)候這會(huì)起到適得其反的效果。

  筆者以Varchar為例。如在MyISAM標(biāo)中,如果沒(méi)有任何可變長(zhǎng)的列,那么最好使用固定大小的數(shù)據(jù)類(lèi)型。雖然采用固定長(zhǎng)度的數(shù)據(jù)類(lèi)型,往往會(huì)浪費(fèi)一定的存儲(chǔ)空間。因?yàn)槿绻脩?hù)輸入的數(shù)據(jù)不足,采用固定長(zhǎng)度的話(huà),數(shù)據(jù)存儲(chǔ)時(shí)仍然會(huì)按這個(gè)固定的長(zhǎng)度來(lái)存儲(chǔ)。但是在這種情況下,能夠用固定長(zhǎng)度的,還是要使用固定長(zhǎng)度。因?yàn)檫@種情況下雖然會(huì)浪費(fèi)一定的硬盤(pán)空間,但是卻可以提高數(shù)據(jù)的查詢(xún)速度。

  可見(jiàn),并不是在任何情況下對(duì)數(shù)據(jù)減肥都可以提高數(shù)據(jù)庫(kù)的性能。這就好像節(jié)支開(kāi)源,這個(gè)節(jié)省要節(jié)省在刀刃上。否則的話(huà),不但不能夠節(jié)支,而且還會(huì)搬起石頭砸自己的腳。通俗的說(shuō),就是該瘦的地方要瘦,該豐滿(mǎn)的地方要豐滿(mǎn)。記住這句話(huà),就對(duì)了。

  建議五:將表分割以實(shí)現(xiàn)減肥的目的

  螞蟻在搬食物時(shí),如果某塊食物過(guò)大,無(wú)法搬動(dòng)的話(huà),螞蟻則可能會(huì)將這個(gè)塊食物進(jìn)行分割,直到其搬得動(dòng)為止。這就是分蛋糕原理。其實(shí)這種現(xiàn)象在日常工作中經(jīng)常常見(jiàn)。如我們有一張數(shù)據(jù)庫(kù)表格,如果里面的紀(jì)錄非常多,那么表格的允許速度會(huì)非常的慢。在這種情況下,可以根據(jù)一定的規(guī)則將表分為多個(gè)工作簿。如現(xiàn)在有一份企業(yè)員工的考勤信息。對(duì)這個(gè)表進(jìn)行查詢(xún)、排序、統(tǒng)計(jì)時(shí),等待時(shí)間非常的長(zhǎng)。此時(shí)就可以根據(jù)部門(mén)將其分割成不同的工作簿,然后再對(duì)其進(jìn)行相關(guān)的數(shù)據(jù)分析。此時(shí)雖然工作量會(huì)大一點(diǎn),但是其處理的速度會(huì)變快許多。

  根據(jù)這個(gè)原理,在數(shù)據(jù)庫(kù)優(yōu)化時(shí),可以將一個(gè)經(jīng)常被掃描的大表分割為2個(gè)或者2個(gè)以上的表示非常有益的。如在日常工作中,筆者現(xiàn)在有一個(gè)動(dòng)態(tài)格式的數(shù)據(jù)表,并且這個(gè)數(shù)據(jù)是使用一個(gè)掃描表時(shí),就會(huì)用這個(gè)來(lái)找出相關(guān)行的比較小的靜態(tài)格式的表。

  通過(guò)這個(gè)表的拆分,可以將一塊大蛋糕分為幾塊小的蛋糕,以利于后續(xù)數(shù)據(jù)的統(tǒng)計(jì)與分析。當(dāng)然這個(gè)效果的好壞,直接跟這個(gè)拆分的規(guī)則有關(guān)。關(guān)于表如何拆分才能夠達(dá)到理想的效果,這又是一個(gè)比較大的話(huà)題。由于這里篇幅有限,筆者不做過(guò)多的說(shuō)明?;蛟S在后續(xù)的文章中,筆者會(huì)以這命題進(jìn)行展開(kāi),給大家做詳細(xì)的說(shuō)明。

it知識(shí)庫(kù)給數(shù)據(jù)減肥 讓MySQL數(shù)據(jù)庫(kù)跑的更快,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 午夜精品久久久内射近拍高清 | 中文在线免费看视频 | 超碰在线97久久视频观看 | 最近中文字幕mv手机免费高清 | 99久久久久精品国产免费麻豆 | 免费在线视频a | 果冻传媒2021一二三在线观看 | 国语自产精品一区在线视频观看 | 国产传媒精品1区2区3区 | 国产日韩亚洲专区无码 | 第一次玩老妇真实经历 | 四川老师边上网课边被啪视频 | se01短视频在线观看 | 极品网红液液酱粉嫩福利照子凌酱 | 婷婷四房播客五月天 | 99精品免费久久久久久久久日本 | 久久成人a毛片免费观看网站 | 毛片大全网站 | 午夜福利体验免费体验区 | 久久是热频国产在线 | 一级黄色香蕉视频 | 手机看片国产免费久久网 | 色老板美国在线观看 | 女人和男人插曲视频大全 | 欧美黄色一级 | 中文字幕视频在线观看 | 精品视频免费在线观看 | 伦理片2499电影伦理片 | 我与旗袍老师疯狂床震 | xxxx69美国| 蜜芽无码亚洲资源网站 | 久久精品亚洲AV无码三区观看 | 国产高清精品国语特黄A片 国产高清国内精品福利色噜噜 | 99久女女精品视频在线观看 | 欧美激情视频在线观看一区二区三区 | 成人区在线观看免费视频 | 色视频色露露永久免费观看 | 99久久精品国产高清一区二区 | 午夜精品久久久久久久99蜜桃 | 日本久久免费大片 | 精精国产www视频在线观看免费 |