真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么給自己的讓MySQL數(shù)據(jù)庫減肥

這篇文章將為大家詳細(xì)講解有關(guān)怎么給自己的讓MySQL數(shù)據(jù)庫減肥,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)建站是專業(yè)的榆樹網(wǎng)站建設(shè)公司,榆樹接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行榆樹網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

數(shù)據(jù)庫優(yōu)化工作中,使數(shù)據(jù)盡可能的小,使表在硬盤上占據(jù)的空間盡可能的小,這是最常用、也是最有效的手段之一。因?yàn)榭s小數(shù)據(jù),相對(duì)來說可以提高硬盤的讀寫速度,并且在查詢過程中小表的內(nèi)容處理時(shí)所占用的系統(tǒng)資源比較少。同理,如果在比較小的列上設(shè)置索引的話,其索引所占用的資源也會(huì)比較少。那么數(shù)據(jù)庫管理員該如何給自己的數(shù)據(jù)減肥呢?下面創(chuàng)新互聯(lián)小編來講解下數(shù)據(jù)庫管理員該如何給自己的讓MySQL數(shù)據(jù)庫減肥?

數(shù)據(jù)庫管理員該如何給自己的讓MySQL數(shù)據(jù)庫減肥

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

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

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

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

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

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

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

數(shù)據(jù)庫管理員該如何給自己的讓MySQL數(shù)據(jù)庫減肥

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

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

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

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

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

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

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

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

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

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

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

根據(jù)這個(gè)原理,在數(shù)據(jù)庫優(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è)來找出相關(guān)行的比較小的靜態(tài)格式的表。

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

關(guān)于怎么給自己的讓MySQL數(shù)據(jù)庫減肥就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


當(dāng)前名稱:怎么給自己的讓MySQL數(shù)據(jù)庫減肥
分享地址:http://weahome.cn/article/pjsocp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部