<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
先忽略掉索引這個概念,如果現在直接要查某條記錄,要如何查詢呢?
如果表中的記錄很少,一個頁就夠放,那麼這時候有 2 種情況:
當表中的記錄非常多,就會用到很多的資料頁來儲存,這時候需要 2 個步驟:
總得來說,當沒有索引,我們無法快速定位到記錄所在頁,只能從第一頁沿著雙向連結串列(頁有前一頁和後一頁)一直找下去,然後在每一頁中重複上述的過程查詢指定的記錄,需要遍歷所有記錄,這種方式非常耗時。
既然是因為頁數太多導致定位記錄太慢,那如何解決呢?不妨參考一下“頁目錄”。
頁目錄就是為了根據主鍵快速定位一條記錄在頁中的位置而設定的。那麼我們也可以想辦法為快速定位記錄所在的頁,搞一個“別的目錄”。
但是這個“別的目錄”要想完成還得幹好 2 件事。
假設,每個資料頁最多可以放 3 條記錄(實際上可以放很多),那麼現在向表裡插入 3 條記錄,每條記錄有3個列 c1、c2、c3。為了看著方便,儲存行格式也簡化下,只留關鍵屬性。注意中間3條是使用者記錄,首尾的2條是虛擬記錄 Infimum 和 Supremum。
此時,繼續插入 1 條記錄。按照假設的情況,現在需要多分配一個新的頁,所以 2 個頁之間就變成了這樣。
注意紅色字型顯示的2條記錄,本來主鍵 4 的記錄是新插入的,按理應該放在新的頁。但是,為了滿足下一頁使用者記錄的主鍵值必須大於上一頁的使用者記錄主鍵值,做了諸如記錄移動的操作,這個過程也可以稱為“頁分裂”。
另外,為什麼新頁是頁 28,而不是 11?因為頁在磁碟上可能並不挨著,它們只是通過維護上一頁和下一頁的編號而建立了連結串列關係。
現在繼續向表裡增加資料,最終多個頁的關係是這樣:
因為這些頁在磁碟上可能不挨著,所有想要快速從這麼多頁中根據主鍵快速定位某記錄,就要給它們編制一個目錄。
每個頁對應一個目錄項,每個目錄項包括:
所以,給它們編好目錄之後就是這樣的關係:
那麼,現在我想查詢主鍵值為 20 的記錄,具體就分兩步走:
先從目錄項中根據二分法快速確定出主鍵值為 20 的記錄所在目錄項 3 中,且對應的頁為 9。知道是在頁 9,重複之前的方式,找到最終目標記錄。
到此,一個簡易的方案完成。而完成的這個簡易目錄,它有個別名,叫做索引。
上述的簡易索引是原書作者為了循序漸進的幫助讀者理解而設定的內容,這並不是innodb的索引方案。
那麼針對上述的建議索引,看下有哪些問題。
問題一:
InnoDB 使用頁作為管理儲存空間的基本單位,也就是最多隻能儲存16kb的連續儲存。
當表中記錄越來越多,此時就需要非常大的連續儲存空間才可以把所有的目錄項都裝下,這對巨量資料量的表來說不現實。
問題二:
我們經常還要對記錄執行增刪改操作,會牽一髮而動全身。
比如,上圖中我如果把頁 28 中的記錄都刪除,那麼頁 28 就沒必要存在,進而目錄項 2 也沒必要存在。這時候就需要把目錄項 2 後的目錄項都向前移動一下。
就算不移動,把目錄項 2 作為冗餘放在目錄項列表中,仍然會浪費很多的儲存空間。
所以,InnoDB 的作者發現了一種靈活管理所有目錄項的方式,詳見下一篇。
本文參考書籍:《mysql是怎樣執行的》
以上就是Mysql簡易索引方案講解的詳細內容,更多關於Mysql簡易索引的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45