您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何使用MYSQL INDEX,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
平時我們在使用INDEX的時候都是那么理所應當,而原理估計了解的人不是太多。今天來說說MYSQL 的索引的一些東西,或許你已經知道了,或許你還不知道,follow me .
自從MYSQL 5.7 后,INDEX的建立不在是從頂向下的方式,而是自下向上的方式來建立索引。
一般建立一個二級索引需要的步驟
1 從聚集索引中讀取相關的數據條目來進行二級索引的構建
2 進行與索引相關的歸并排序
3 插入二級索引需要的記錄
而傳統的索引構建的方法自上而下,他會產生很多的頁面的分割和頁面的合并的操作,而這樣的操作對于建立索引的代價是比較昂貴的。MYSQL 5.7 構建索引的方法變為從下往上的方式來進行。(用圖來演示)
1 插入一個頁 葉子節點
2 當葉子節點插滿后,將葉子節點的指針插入到父節點
3 然后產生另外一個葉子節點,在將數據插滿后連接到父節點,周而復始
4 通過上面周而復始的操作,就產生了二級的索引
但問題是大部分數據庫都有一個填充因子(有的數據庫不這么叫),在MYSQL 里面默認的比率是 100, 而聚簇索引則以默認 百分之6的填充因子進行設置,也就是說一個頁面有百分之6是空的,為未來的DML操作進行保留。
這就牽扯到一個事情,即使默認的索引填充率應該怎么設置的問題,如果設置成80%,就是有20%的空間要留給未來的數據升級使用。
一般來說可以根據具體的數據庫的大部分表的更新的度來進行 innodb_fill_factor 來進行設置。一般從 70% -90% 不等來設計,如果表是靜態表,基本上不更新則 90% 即可,如果經常更新,并且有些字段的值的變動較大,則可以考慮70%。后續中的頁的在拆分和合并的操作。
所以調整innodb_fill_factor 操作的主要目的
1 防止也的 splits 和 merges
2 不要經常進行數據插入位置的research
3 如果沒有splits 和 merges 則 redo log 的壓力就會比較小,不會進行redo log的操作
缺點也是顯而易見的,就是會浪費空間。
以上就是如何使用MYSQL INDEX,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。