mysql 我不想再看,再想,終結者

2021-10-09 03:53:35 字數 1856 閱讀 2678

1.先別扯這麼多,先把資料結構搞清楚。

何為索引:方便快速查詢我們表的行記錄的間接標識。有了它,減少我們掃瞄表的範圍,快速定位

不用索引,我們找資料的時候,就需要和磁碟進行互動,一行一行檢索比對資料,磁碟io就是很大瓶頸

大致分類:btree索引,    hash索引,  空間索引,全文索引

簡單介紹結構:乙個矮胖的二叉搜尋樹

分為b+tree和b-tree  沒什麼不同,只是+的是-的公升級版。資料結構一樣,只是儲存的內容有些區別。

b-tree:

do:   子節點儲存的是這個索引和資料,存的是完整的資料

bad:會造成節點大,樹的高度增加,查詢複雜,儲存容量變少,磁碟io增加

good:索引查詢時,找到索引,直接可以從子節點獲取記錄。

b+tree:

good: 由於頁的大小有限,16k,為了優化上述,增加索引的容量,減少磁碟io。少量的查詢,就能找到索引。

所有的葉子節點按順序鏈結成了鍊錶,因此可以方便的話進行範圍查詢

do: 根節點仍舊存索引,子節點存的是索引+記錄的資料位址,不是全部資料。這樣就提高了資料容量。

bad: 查詢索引時,需要經過標識,再去查詢行記錄資料

myisam引擎innodb引擎

都是使用的是b+tree的資料結構儲存索引檔案資料

(1)單節點能儲存更多資料,使得磁碟io次數更少。

(2)葉子節點形成有序鍊錶,便於執行範圍操作。

(3)聚集索引中,葉子節點的data直接包含資料;非聚集索引中,葉子節點儲存資料位址的指標

區別:

myiasm: 不支援事務,支援全文索引.  一般統計查詢多使用比較合適

innodb: 支援事務,行級鎖,5.6mysql以後支援全文索引。對事務可靠性要求高推薦

儲存結構:

索引檔案子節點存的是索引和記錄位址

因為索引檔案和資料檔案是分離的,所以是非聚簇索引

查詢的實現:

建立表會有這檔案: .myi 結尾  索引檔案     .myd結尾  資料檔案    .frm結尾    資料結構型別

select * from user where id = 1 查詢的時候,流程如下:

會先到索引檔案查詢有沒有id的索引樹,根據id索引樹找到id=1的字節點,從子節點傷獲取到資料記錄位址。

根據記錄位址,查詢資料檔案,獲取具體資料。

儲存結構:

索引檔案,預設主鍵索引樹存在,主鍵索引樹的葉子節點存放的是主鍵索引+資料資訊。

其他索引:葉子節點存的是索引和主鍵

索引和資料資訊是存在乙個檔案,聚集索引

查詢的實現:

建立表會有:  user.ibd   索引檔案        user.frm資料結構型別

select * from user where name = 『吳磊』  查詢的時候,流程如下:

看有沒有索引樹是使用name建立的,有索引樹,就會找到對應葉子節點的索引name和主鍵值

用主鍵值索引樹去查詢對應葉子節點的索引和資料

我想做海綿寶寶 不想再為你哭泣

我想做海綿寶寶 不想再為你哭泣 如果我愛你上你是悲劇一場,那這悲劇該如果收場?俄 試 圖 解 剖 俄 捫 的 愛 情 可 發 現 什 麼 都 沒 有 長得美,就是資本.我忍不住想出聲來。深夜無盡的夜裡,觸碰不敢忘記的回憶。愛不能分配,只能很純粹,純粹的,只能給乙個誰。愛情如泡沫,一旦破碎,連空氣都沉...

不想再租房子了

2010 2 8 20 52 02 來深圳五年多了,租了5年多的房子,第一年剛從學校過來實習,在葉生那裡租房,租了4個月,存了點錢,把學費交了,畢業重新回到深圳,接著在毛姐那裡住,租了3年,存了一筆錢,娶了老婆 後來在餘老師那裡租房,到現在兩年多了,這兩年來,我自己買了房,老婆生了個兒子,我自己也到...

我不想做木偶

我不想做木偶 我是乙個有思想的人,我不是木偶,也不想做木偶。人生在世,如白駒之過隙。須臾之間,為了不白活於世,為了知道自己來這到這個世界上是幹什麼來了。我發誓我要把自己的精神永留於世。自從我選擇了這個職業,我發現了很多的樂趣。也讓我的生活十分的豐富與精彩。在工作中我會面臨各種各樣的問題。每當乙個專案...