Mysql常見面試題

2021-10-14 01:47:55 字數 1803 閱讀 4622

參考博文:

innodb引擎中的索引型別:

聚集索引:每張表都會他們的主鍵建立一顆b+樹索引, 並且在葉子節點上會存放對應主鍵的行記錄。 

輔助索引(非聚集索引):對非主鍵列建立的b+樹索引,葉子節點存放了索引值和書籤,這個書籤就是對應的主鍵值。那之後可以通過這個主鍵值找到對應的行記錄。

聯合索引:對兩個或者兩個以上的字段建立索引,其實也就是乙個b+樹結構,只是索引值1個或者是多個,那麼b+樹中的鍵值排序,它是會先對乙個索引值進行排序,在乙個索引值相同的情況下在使用第二個索引值進行排序。使用在建立(a,b,c)這種聯合索引的時候,使用a; a,b; a,b,c 字段進行查詢的時候可以使用聯合索引,使用a,c;b,c的時候是不走索引的。

覆蓋索引:這不能算一種索引型別,只是來表示「只使用輔助索引,不使用聚集索引的一種場景」, 如查詢時只查詢使用的索引字段。

innodb: mysql中使用頻率最高的資料庫引擎。特點:支援行鎖,支援事務(acid, 4種隔離級別),外來鍵。

myisam: 不支援事務,表鎖;適合一些數倉型別的表,只有查詢的操作,沒有修改的操作。

ndb: 集群引擎,資料存放在記憶體中。單錶主鍵查詢快,join查詢慢,連線操作是在mysql資料庫層面完成,而不是在引擎層完成,存在巨大的網路開銷。

memory: 資料存放在記憶體中,資料庫崩潰或者是重啟資料會消失,使用的是hash索引。適合存放零時資料。查詢速度很快。

archive: 只提供insert和select的操作。會對存放的資料進行壓縮,壓縮比例會到1:10。適合存放寫歸檔資料。

maria: myisam的加強版,支援事務,支援行鎖,提供索引和資料的快取,提供mvcc功能。

b+樹:多路自平衡樹,所有的索引值都會出現在葉子節點中,葉子節點使用了陣列加鍊表的概念連線。每個陣列可以使用頁的概念稱呼,頁的最大長度是個定值,頁與頁之間通過了雙向鍊錶相互連線。

插入操作:b+樹形變,若頁未滿則加入到頁中,如頁面則從中間值一分為2,小於中間值是一半,大於等於中間值是一半。父節點頁如果滿了的話,也會如上**。

刪除操作:刪除的元素只是出現在葉子節點,並且刪除後所在頁的填充率依然在50%以上,則不用變換。如果刪除後所在頁的填充率小於50%,則需要和兄弟節點合併。如果這個節點在父節點中,父節點也需要刪除該元素,並從葉子節點中的該元素右邊的乙個元素到父節點中。

資料庫中頁的特點:大。

雜湊索引:自適應性索引,不能認為干預一張表中是否會生成hash索引。雜湊索引只能用於等值查詢,不能用於範圍查詢。

我們知道雜湊表的 結構是陣列加鍊表的形式。怎麼確定資料是在陣列中的哪個位置呢?根據sql中的表名+關鍵字來確定。innodb中的表空間都會有乙個spaceid,通過關鍵字又可以確定到它的offset,所以k的計算公式:k = spaceid<<20 + spaceid + offset.

什麼情況innodb會建立這種自適應的hash索引?

經常訪問的輔助索引資料會生成hash索引。

全文索引:

1. 倒排序索引:通過分詞,可以找到對應的過的文件id,以及它這個個文件**現過的次數。

2. 分詞是如何儲存的:innodb中有6張輔助表,通過word的latin編碼來決定分割槽的位置。

首先,你可以理解oracle庫中的表是有版本號的。每次commit之後,表的版本號是會發生變化的。

對於讀操作來說,採用的是一致性讀的方式,只會讀取事務開始時,最新的版本號的內容。

對於更新操作來說,採用的當前讀的方式:需要更新的資料是當前最新的版本得資料,會按當前最新的字段資料進行匹配。而不是事務開始時的那個版本的內容進行匹配。

mysql常見面試題

索引是一種資料結構,使用索引可以提高查詢效率。1.hash索引 2.b 樹索引 1.hash索引查詢更快,使用hash函式一次查詢,但是無法進行範圍查詢,不支援排序 2.b 樹索引有logn級別的查詢速度,支援範圍查詢,支援排序 1.大資料量 2.頻繁使用字段 一組sql語句,要麼同時成功,要麼同時...

mysql常見面試題

1.資料庫的儲存引擎有哪些?myisam與innodb的區別?2.三正規化指的是哪三正規化?3.什麼是事物?有那些特點?事物的隔離級別有那些?mysql的預設隔離級別有哪些?4.髒讀 幻讀 不可重複讀指的是什麼?5.資料庫優化 5.1 什麼是資料庫索引?資料庫索引有哪些型別?5.2 資料庫索引b t...

mysql常見面試題

mysql的功能特點如下 可以同時處理幾乎不限數量的使用者 處理多達50,000,000以上的記錄 命令執行速度快,也許是現今最快的 簡單有效的使用者特權系統。慢查詢慢查詢 注意sql查詢慢的原因都是 引起filesort 索引失效 select like,優化資料結構 大化小 分解關聯查詢 少用j...