日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

丁奇 mysql_丁奇-MySQL实战读书笔记4

發(fā)布時間:2023/12/20 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 丁奇 mysql_丁奇-MySQL实战读书笔记4 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

索引維護

image.png

B+ 樹為了維護索引有序性,在插入新值的時候需要做必要的維護。以上面這個圖為例,如果插入新的行 ID 值為 700,則只需要在 R5 的記錄后面插入一個新記錄。如果新插入的 ID 值為 400,就相對麻煩了,需要邏輯上挪動后面的數(shù)據(jù),空出位置。而更糟的情況是,如果 R5 所在的數(shù)據(jù)頁已經(jīng)滿了,根據(jù) B+ 樹的算法,這時候需要申請一個新的數(shù)據(jù)頁,然后挪動部分數(shù)據(jù)過去。這個過程稱為頁分裂。在這種情況下,性能自然會受影響。

當然有分裂就有合并。當相鄰兩個頁由于刪除了數(shù)據(jù),利用率很低之后,會將數(shù)據(jù)頁做合并。合并的過程,可以認為是分裂過程的逆過程。

主鍵索引的葉子節(jié)點存的是整行數(shù)據(jù)。在 InnoDB 里,主鍵索引也被稱為聚簇索引(clustered index)。

非主鍵索引的葉子節(jié)點內(nèi)容是主鍵的值。在 InnoDB 里,非主鍵索引也被稱為二級索引(secondary index)。

主鍵長度越小,普通索引的葉子節(jié)點就越小,普通索引占用的空間也就越小。

總結:

1.索引的作用:提高數(shù)據(jù)查詢效率

2.常見索引模型:哈希表、有序數(shù)組、搜索樹

3.哈希表:鍵 - 值(key - value)。

4.哈希思路:把值放在數(shù)組里,用一個哈希函數(shù)把key換算成一個確定的位置,然后把value放在數(shù)組的這個位置

5.哈希沖突的處理辦法:鏈表

6.哈希表適用場景:只有等值查詢的場景

7.有序數(shù)組:按順序存儲。查詢用二分法就可以快速查詢,時間復雜度是:O(log(N))

8.有序數(shù)組查詢效率高,更新效率低

9.有序數(shù)組的適用場景:靜態(tài)存儲引擎。

10.二叉搜索樹:每個節(jié)點的左兒子小于父節(jié)點,父節(jié)點又小于右兒子

11.二叉搜索樹:查詢時間復雜度O(log(N)),更新時間復雜度O(log(N))

12.數(shù)據(jù)庫存儲大多不適用二叉樹,因為樹高過高,會適用N叉樹

13.InnoDB中的索引模型:B+Tree

14.索引類型:主鍵索引、非主鍵索引

主鍵索引的葉子節(jié)點存的是整行的數(shù)據(jù)(聚簇索引),非主鍵索引的葉子節(jié)點內(nèi)容是主鍵的值(二級索引)

15.主鍵索引和普通索引的區(qū)別:主鍵索引只要搜索ID這個B+Tree即可拿到數(shù)據(jù)。普通索引先搜索索引拿到主鍵值,再到主鍵索引樹搜索一次(回表)

16.一個數(shù)據(jù)頁滿了,按照B+Tree算法,新增加一個數(shù)據(jù)頁,叫做頁分裂,會導致性能下降。空間利用率降低大概50%。當相鄰的兩個數(shù)據(jù)頁利用率很低的時候會做數(shù)據(jù)頁合并,合并的過程是分裂過程的逆過程。

17.從性能和存儲空間方面考量,自增主鍵往往是更合理的選擇。

總結

以上是生活随笔為你收集整理的丁奇 mysql_丁奇-MySQL实战读书笔记4的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。