Mysql索引介紹及常見索引

前言

mysql索引是什麼有哪些索引,如果隨便找一個人都會說出幾點出來,但是,
索引的原理和目的是什麼,建立索引需要注意什麼?
當時設計者是遇到什麼困難要創建這些索引
這些索引在磁盤上是怎麼是怎麼io操作的,怎麼預讀的
索引的底層數據結構是啥?

我想估計很多人在面對面試官咄咄逼人的問題是不是直冒冷汗!!
爲了吊打面試官,讓我們一起來一步一步的來慢慢深入瞭解下去吧~~

索引是什麼,爲什麼要有索引

索引呢其實就是一個鍵值,是數據庫引擎中一個重要的查找數據的一個數據類型,形象點說就相當於我們字典裏面的音序表,各位想象一下如果沒有音序表,我們查找一個字典裏面的數據是不是特別困難需要一頁一頁的查找特別費事費力,這個時候呢音序表就起了特別大的作用,其實也就是索引的閃亮登場。索引當然也不是越多越好,使用不當就會導致反效果,就想詞典音序表一樣,如果瞎使用音字節,不按一定規律和特性來,倒會適得其反,得不償失。

磁盤的io操作和預讀

在這裏插入圖片描述
我們都知道磁盤讀取數據的時候,每次花費的時間可以分爲3部分

平均尋道時間 平均旋轉延遲 數據傳輸時間

  • 平均尋道時間:一般指的是磁頭移動到指定的磁道需要的時間,一般硬盤的平均尋道時間在7.5~ 14ms。

  • 平均旋轉延遲:盤片旋轉將請求數據所在扇區移至讀寫磁頭下方所需要的時間,就是我們經常說的磁盤轉速,一般一個磁盤的轉速爲7200r/min,每個磁道有160個扇區,每個扇區有512B,大概現在的磁盤都是這樣的速度和分配 平均旋轉延遲就是60×1000÷7200÷2(平均情況下,需要旋 轉半圈) = 4.17ms

  • 數據傳輸時間:完成傳輸所請求的數據所需要的時間。一般都在零點幾毫秒可以忽略不計

那麼我們算下數據的總花費時間

總花費時間 = 平均尋道時間 + 平均旋轉延遲 + 數據傳輸時間(忽略不計)
9.17ms = 7.5ms + 4.17ms

今天先寫到這明天在繼續~~太晚了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章