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

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

怎么進行MySQL性能優(yōu)化中的索引優(yōu)化-創(chuàng)新互聯(lián)

本篇文章為大家展示了怎么進行MySQL性能優(yōu)化中的索引優(yōu)化,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

創(chuàng)新互聯(lián)建站網(wǎng)絡(luò)公司擁有10年的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗,上千多家客戶的共同信賴。提供成都網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)站定制、友情鏈接、建網(wǎng)站、網(wǎng)站搭建、響應(yīng)式網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)

大家都知道索引對于數(shù)據(jù)訪問的性能有非常關(guān)鍵的作用,都知道索引可以提高數(shù)據(jù)訪問效率。

為什么索引能提高數(shù)據(jù)訪問性能?他會不會有“副作用”?是不是索引創(chuàng)建越多,性能就越好?到底該如何設(shè)計索引,才能大限度的發(fā)揮其效能?

這里主要是帶著上面這幾個問題來做一個簡要的分析,同時排除了業(yè)務(wù)場景所帶來的特殊性,請不要糾結(jié)業(yè)務(wù)場景的影響。

  • 索引為什么能提高數(shù)據(jù)訪問性能?
    很多人只知道索引能夠提高數(shù)據(jù)庫的性能,但并不是特別了解其原理,其實我們可以用一個生活中的示例來理解。

    我們讓一位不太懂計算機的朋友去圖書館確認一本叫做《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計》的書是否在藏,這樣對他說:“請幫我借一本計算機類的數(shù)據(jù)庫書籍,是屬于 MySQL 數(shù)據(jù)庫范疇的,叫做《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計》”。朋友會根據(jù)所屬類別,前往存放“計算機”書籍區(qū)域的書架,然后再尋找“數(shù)據(jù)庫”類存放位置,再找到一堆講述“MySQL”的書籍,最后可能發(fā)現(xiàn)目標在藏(也可能已經(jīng)借出不在書架上)。

    在這個過程中: “計算機”->“數(shù)據(jù)庫”->“MySQL”->“在藏”->《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計》其實就是一個“根據(jù)索引查找數(shù)據(jù)”的典型案例,“計算機”->“數(shù)據(jù)庫”->“MySQL”->“在藏” 就是朋友查找書籍的索引。

    假設(shè)沒有這個索引,那查找這本書的過程會變成怎樣呢?朋友只能從圖書館入口一個書架一個書架的“遍歷”,直到找到《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計》這本書為止。如果幸運,可能在第一個書架就找到。但如果不幸呢,那就慘了,可能要將整個圖書館所有的書架都找一遍才能找到我們想要的這本書。

    注:這個例子中的“索引”是記錄在朋友大腦中的,實際上,每個圖書館都會有一個非常全的實際存在的索引系統(tǒng)(大多位于入口顯眼處),由很多個貼上了明顯標簽的小抽屜構(gòu)成。這個索引系統(tǒng)中存放這非常齊全詳盡的索引數(shù)據(jù),標識出我們需要查找的“目標”在某個區(qū)域的某個書架上。而且每當(dāng)有新的書籍入庫,舊的書籍銷毀以及書記信息修改,都需要對索引系統(tǒng)進行及時的修正。

下面我們通過上面這個生活中的小示例,來分析一下索引,看看能的出哪些結(jié)論?

  • 索引有哪些“副作用”?

    1. 圖書的變更(增,刪,改)都需要修訂索引,索引存在額外的維護成本

    2. 查找翻閱索引系統(tǒng)需要消耗時間,索引存在額外的訪問成本

    3. 這個索引系統(tǒng)需要一個地方來存放,索引存在額外的空間成本

  • 索引是不是越多越好?

    1. 如果我們的這個圖書館只是一個進出中轉(zhuǎn)站,里面的新書進來后很快就會轉(zhuǎn)發(fā)去其他圖書館而從這個館藏中“清除”,那我們的索引就只會不斷的修改,而很少會被用來查找圖書
      所以,對于類似于這樣的存在非常大更新量的數(shù)據(jù),索引的維護成本會非常高,如果其檢索需求很少,而且對檢索效率并沒有非常高的要求的時候,我們并不建議創(chuàng)建索引,或者是盡量減少索引。

    2. 如果我們的書籍量少到只有幾本或者就只有一個書架,索引并不會帶來什么作用,甚至可能還會浪費一些查找索引所花費的時間。
      所以,對于數(shù)據(jù)量極小到通過索引檢索還不如直接遍歷來得快的數(shù)據(jù),也并不適合使用索引。

    3. 如果我們的圖書館只有一個10平方的面積,現(xiàn)在連放書架都已經(jīng)非常擁擠,而且館藏還在不斷增加,我們還能考慮創(chuàng)建索引嗎?
      所以,當(dāng)我們連存儲基礎(chǔ)數(shù)據(jù)的空間都捉襟見肘的時候,我們也應(yīng)該盡量減少低效或者是去除索引。

  • 索引該如何設(shè)計才高效?

    1. 如果我們僅僅只是這樣告訴對方的:“幫我確認一本數(shù)據(jù)庫類別的講述 MySQL 的叫做《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計》的書是否在藏”,結(jié)果又會如何呢?朋友只能一個大類區(qū)域一個大類區(qū)域的去尋找“數(shù)據(jù)庫”類別,然后再找到 “MySQL”范疇,再看到我們所需是否在藏。由于我們少說了一個“計算機類”,朋友就必須到每一個大類去尋找。
      所以,我們應(yīng)該盡量讓查找條件盡可能多的在索引中,盡可能通過索引完成所有過濾,回表只是取出額外的數(shù)據(jù)字段。

    2. 如果我們是這樣說的:“幫我確認一本講述 MySQL 的數(shù)據(jù)庫范疇的計算機叢書,叫做《MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計》,看是否在藏”。如果這位朋友并不知道計算機是一個大類,也不知道數(shù)據(jù)庫屬于計算機大類,那這位朋友就悲劇了。首先他得遍歷每個類別確認“MySQL”存在于哪些類別中,然后從包含 “MySQL” 書籍中再看有哪些是“數(shù)據(jù)庫”范疇的(有可能部分是講述PHP或者其他開發(fā)語言的),然后再排除非計算機類的(雖然可能并沒有必要),然后才能確認。
      所以,字段的順序?qū)M合索引效率有至關(guān)重要的作用,過濾效果越好的字段需要更靠前。

    3. 如果我們還有這樣一個需求(雖然基本不可能):“幫我將圖書館中所有的計算機圖書借來”。朋友如果通過索引來找,每次都到索引柜找到計算機書籍所在的區(qū)域,然后從書架上搬下一格(假設(shè)只能以一格為單位從書架上取下,類比數(shù)據(jù)庫中以block/page為單位讀?。〕龅谝槐?,然后再從索引柜找到計算機圖書所在區(qū)域,再搬下一格,取出一本… 如此往復(fù)直至取完所有的書。如果他不通過索引來找又會怎樣呢?他需要從地一個書架一直往后找,當(dāng)找到計算機的書,搬下一格,取出所有計算機的書,再往后,直至所有書架全部看一遍。在這個過程中,如果計算機類書籍較多,通過索引來取所花費的時間很可能要大于直接遍歷,因為不斷往復(fù)的索引翻閱所消耗的時間會非常長。(延伸閱讀:這里有一篇以前寫的關(guān)于Oracle的文章,索引掃描還是全表掃描(Index Scan Or Full Table Scan))
      所以,當(dāng)我們需要讀取的數(shù)據(jù)量占整個數(shù)據(jù)量的比例較大抑或者說索引的過濾效果并不是太好的時候,使用索引并不一定優(yōu)于全表掃描。

    4. 如果我們的朋友不知道“數(shù)據(jù)庫”這個類別可以屬于“計算機”這個大類,抑或者圖書館的索引系統(tǒng)中這兩個類別屬性并沒有關(guān)聯(lián)關(guān)系,又會怎樣呢?也就是說,朋友得到的是2個獨立的索引,一個是告知“計算機”這個大類所在的區(qū)域,一個是“數(shù)據(jù)庫”這個小類所在的區(qū)域(很可能是多個區(qū)域),那么他只能二者選其一來搜索我的需求。即使朋友可以分別通過2個索引檢索然后自己在腦中取交集再找,那這樣的效率實際過程中也會比較低下。
      所以,在實際使用過程中,一次數(shù)據(jù)訪問一般只能利用到1個索引,這一點在索引創(chuàng)建過程中一定要注意,不是說一條SQL語句中Where子句里面每個條件都有索引能對應(yīng)上就可以了。

上述內(nèi)容就是怎么進行MySQL性能優(yōu)化中的索引優(yōu)化,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。


當(dāng)前題目:怎么進行MySQL性能優(yōu)化中的索引優(yōu)化-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://weahome.cn/article/djocgj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部