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