您好,登錄后才能下訂單哦!
這篇文章主要介紹“MySQ中索引的實現(xiàn)方式”,在日常操作中,相信很多人在MySQ中索引的實現(xiàn)方式問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MySQ中索引的實現(xiàn)方式”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
首先,需要對相關(guān)背景知識進行了解:B-Tree & B+Tree、折半查找(Binary Search)、 數(shù)據(jù)庫的性能問題和數(shù)據(jù)的基本存儲結(jié)構(gòu)。下面做簡要分析:
1.B-Tree & B+Tree
http://en.wikipedia.org/wiki/B%2B_tree
http://en.wikipedia.org/wiki/B-tree
2.半查找(Binary Search)
http://en.wikipedia.org/wiki/Binary_search_algorithm
3.數(shù)據(jù)庫的性能問題
?、?磁盤IO性能非常低,嚴重的影響數(shù)據(jù)庫系統(tǒng)的性能。
?、?磁盤順序讀寫比隨機讀寫的性能高很多。
4.數(shù)據(jù)的基本存儲結(jié)構(gòu)
?、俅疟P空間被劃分為許多大小相同的塊(Block)或者頁(Page).
② 一個表的這些數(shù)據(jù)塊以鏈表的方式串聯(lián)在一起。
③ 數(shù)據(jù)是以行(Row)為單位一行一行的存放在磁盤上的塊中,如圖所示.
?、?在訪問數(shù)據(jù)時,一次從磁盤中讀出或者寫入至少一個完整的Block。
數(shù)據(jù)基本操作的實現(xiàn)
基本操作包括:INSERT、UPDATE、DELETE、SELECT。
1.SELECT
?、俣ㄎ粩?shù)據(jù)
② 讀出數(shù)據(jù)所在的塊,對數(shù)據(jù)加工
?、?返回數(shù)據(jù)給用戶
2.UPDATE、DELETE
①定位數(shù)據(jù)
?、谧x出數(shù)據(jù)所在的塊,修改數(shù)據(jù)
?、蹖懟卮疟P
3.INSERT
?、俣ㄎ粩?shù)據(jù)要插入的頁(如果數(shù)據(jù)需要排序)
②讀出要插入的數(shù)據(jù)頁,插入數(shù)據(jù).
③ 寫回磁盤
如何定位數(shù)據(jù)?
4.表掃描(Table Scan)
從磁盤中依次讀出所有的數(shù)據(jù)塊,一行一行的進行數(shù)據(jù)匹配。
時間復(fù)雜度 是O(n), 如果所有的數(shù)據(jù)占用了100個塊。盡管只查詢一行數(shù)據(jù),也需要讀出所有100個塊的數(shù)據(jù)。
需要大量的磁盤IO操作,極大的影響了數(shù)據(jù)定位的性能。
因為數(shù)據(jù)定位操作是所有數(shù)據(jù)操作必須的操作,數(shù)據(jù)定位操作的效率會直接影響所有的數(shù)據(jù)操作的效率。
因此我們開始思考,如何來減少磁盤的IO?
5.減少磁盤IO
減少數(shù)據(jù)占用的磁盤空間:壓縮算法、優(yōu)化數(shù)據(jù)存儲結(jié)構(gòu)
減少訪問數(shù)據(jù)的總量:讀出或?qū)懭氲臄?shù)據(jù)中,有一部分是數(shù)據(jù)操作所必須的,這部分稱作有效數(shù)據(jù)。剩余的部分則不是數(shù)據(jù)操作必須的數(shù)據(jù),稱為無效數(shù)據(jù)。例如,查詢姓名是‘張三’的記錄。那么這條記錄是有效記錄,其他記錄則是無效記錄。我們要努力減少無效數(shù)據(jù)的訪問。
到此,關(guān)于“MySQ中索引的實現(xiàn)方式”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。