2022年MySQL最新面試題3篇 - 存儲引擎

      網友投稿 850 2022-05-28

      大家好,我是漫步coding, 最近在整理2022年Mysql最新面試題, 大家也可以通過我下面的博客地址在線閱讀,?今天講講第2篇: ?索引。本文首發于公眾號: 漫步coding

      2022年MySQL最新面試題目錄

      MySQL數據庫基礎知識

      大家好,我是漫步coding, 最近在整理2022年MySQL最新面試題, 大家也可以通過我下面的博客地址在線閱讀,?今天講講第2篇: ?索引。本文首發于公眾號: 漫步coding

      MySQL數據庫基礎知識

      MySQL索引

      MySQL存儲引擎

      MySQL事務

      MySQL數據庫讀寫鎖

      MySQL視圖

      MySQL觸發器

      MySQL數據庫優化

      2022年MySQL最新面試題3篇 - 存儲引擎

      MySQL部署和運維

      1、可以簡單談談MySQL存儲引擎MyISAM與InnoDB區別

      2、MyISAM索引與InnoDB索引的區別?

      3、InnoDB引擎的4大特性

      出現概率: ★★★★

      1)、關于 InnoDB

      InnoDB 是 MySQL 的默認事務型引擎,用來處理大量短期事務。InnoDB 的性能和自動崩潰恢復特性使得它在非事務型存儲需求中也很流行,除非有特別原因否則應該優先考慮 InnoDB。

      InnoDB 的數據存儲在表空間中,表空間由一系列數據文件組成。MySQL4.1 后 InnoDB 可以將每個表的數據和索引放在單獨的文件中。

      InnoDB 采用 MVCC 來支持高并發,并且實現了四個標準的隔離級別。其默認級別是 REPEATABLE READ,并通過間隙鎖策略防止幻讀,間隙鎖使 InnoDB 不僅僅鎖定查詢涉及的行,還會對索引中的間隙進行鎖定防止幻行的插入。

      InnoDB 表是基于聚簇索引建立的,InnoDB 的索引結構和其他存儲引擎有很大不同,聚簇索引對主鍵查詢有很高的性能,不過它的二級索引中必須包含主鍵列,所以如果主鍵很大的話其他所有索引都會很大,因此如果表上索引較多的話主鍵應當盡可能小。

      InnoDB 的存儲格式是平***立的,可以將數據和索引文件從一個平臺復制到另一個平臺。

      InnoDB 內部做了很多優化,包括從磁盤讀取數據時采用的可預測性預讀,能夠自動在內存中創建加速讀操作的自適應哈希索引,以及能夠加速插入操作的插入緩沖區等。

      2)、關于MyISAM

      MySQL5.1及之前,MyISAM 是默認存儲引擎,MyISAM 提供了大量的特性,包括全文索引、壓縮、空間函數等,但不支持事務和行鎖,最大的缺陷就是崩潰后無法安全恢復。對于只讀的數據或者表比較小、可以忍受修復操作的情況仍然可以使用 MyISAM。

      MyISAM 將表存儲在數據文件和索引文件中,分別以 .MYD 和 .MYI 作為擴展名。MyISAM 表可以包含動態或者靜態行,MySQL 會根據表的定義決定行格式。MyISAM 表可以存儲的行記錄數一般受限于可用磁盤空間或者操作系統中單個文件的最大尺寸。

      MyISAM 對整張表進行加鎖,讀取時會對需要讀到的所有表加共享鎖,寫入時則對表加排它鎖。但是在表有讀取查詢的同時,也支持并發往表中插入新的記錄。

      對于MyISAM 表,MySQL 可以手動或自動執行檢查和修復操作,這里的修復和事務恢復以及崩潰恢復的概念不同。執行表的修復可能導致一些數據丟失,而且修復操作很慢。

      對于 MyISAM 表,即使是 BLOB 和 TEXT 等長字段,也可以基于其前 500 個字符創建索引。MyISAM 也支持全文索引,這是一種基于分詞創建的索引,可以支持復雜的查詢。

      MyISAM 設計簡單,數據以緊密格式存儲,所以在某些場景下性能很好。MyISAM 最典型的性能問題還是表鎖問題,如果所有的查詢長期處于 Locked 狀態,那么原因毫無疑問就是表鎖。

      出現概率: ★★★★

      MyISM和InnoDB索引都是由B+樹實現的,但在索引管理數據方式上卻有所不同。

      1)、InnoDB是聚集索引,數據文件是和(主鍵)索引綁在一起的,即索引 + 數據 = 整個表數據文件,通過主鍵索引到整個記錄,必須要有主鍵,通過主鍵索引效率很高。但是輔助索引需要兩次查詢,因為輔助索引是以建索引的字段為關鍵字索引到主鍵,所以需要兩次,先查詢到主鍵,然后再通過主鍵查詢到數據。

      主鍵索引:以主鍵索引到整條記錄

      輔助索引:以另一字段索引到主鍵

      2)、MyISAM是非聚集索引,也是使用B+Tree作為索引結構,索引和數據文件是分離的,索引保存的是數據文件的指針。主鍵索引和輔助索引是獨立的。也就是說:InnoDB的B+樹主鍵索引的葉子節點就是數據文件,輔助索引的葉子節點是主鍵的值;而MyISAM的B+樹主鍵索引和輔助索引的葉子節點都是數據文件的地址指針。

      主鍵索引:以關鍵字索引到記錄的地址

      輔助索引:以某字段索引到記錄地址

      出現概率: ★★★

      1)、插入緩沖 (Insert Buffer/Change Buffer)

      插入緩存之前版本叫insert buffer,現版本 change buffer,主要提升插入性能,change buffer是insert buffer的加強,insert buffer只針對insert有效,change buffering對insert、delete、update(delete+insert)、purge都有效。

      2)、雙寫機制(Double Write)

      在InnoDB將BP中的Dirty Page刷(flush)到磁盤上時,首先會將(memcpy函數)Page刷到InnoDB tablespace的一個區域中,我們稱該區域為Double write Buffer(大小為2MB,每次寫入1MB,128個頁,每個頁16k,其中120個頁為后臺線程的批量刷Dirty Page,還有8個也是為了前臺起的sigle Page Flash線程,用戶可以主動請求,并且能迅速的提供空余的空間)。在向Double write Buffer寫入成功后,第二步、再將數據分別刷到一個共享空間和真正應該存在的位置。

      3)、自適應哈希索引(Adaptive Hash Index,AHI)

      哈希算法是一種非常快的查找方法,在一般情況(沒有發生hash沖突)下這種查找的時間復雜度為O(1)。InnoDB存儲引擎會監控對表上輔助索引頁的查詢。如果觀察到建立hash索引可以提升性能,就會在緩沖池建立hash索引,稱之為自適應哈希索引(Adaptive Hash Index,AHI)。

      4)、預讀 (Read Ahead)

      預讀(read-ahead)操作是一種IO操作,用于異步將磁盤的頁讀取到buffer pool中,預料這些頁會馬上被讀取到。預讀請求的所有頁集中在一個范圍內。

      也歡迎關注我的公眾號:?漫步coding, 回復:?mysql免費獲取最新Mysql面試題匯總(含答案)。一起交流, 在coding的世界里漫步。

      MySQL

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:3分鐘教你搞定服務器上架信息收集
      下一篇:云時代IT從業者何去何從
      相關文章
      亚洲精品国产成人片| 国产乱辈通伦影片在线播放亚洲 | 中文字幕亚洲日韩无线码| 亚洲欧美日韩国产成人| 一本色道久久综合亚洲精品蜜桃冫 | 国产国拍亚洲精品mv在线观看| 色久悠悠婷婷综合在线亚洲| 亚洲偷自拍拍综合网| 亚洲色偷偷综合亚洲AV伊人| 亚洲一区二区视频在线观看| 亚洲一区二区高清| 亚洲色精品aⅴ一区区三区| 一本色道久久综合亚洲精品| 亚洲人成网7777777国产| 中文亚洲AV片不卡在线观看| 亚洲色大成网站WWW久久九九 | 国产精品亚洲自在线播放页码| 亚洲制服丝袜精品久久| 亚洲AV无码一区二区三区在线| 亚洲国产成人精品激情| 亚洲熟妇无码AV| 久久无码av亚洲精品色午夜| 国产综合成人亚洲区| 亚洲精品偷拍视频免费观看| 激情97综合亚洲色婷婷五| 亚洲精品无码专区久久久| 亚洲Av熟妇高潮30p| 久久久久亚洲精品日久生情| 亚洲成aⅴ人片在线影院八| 亚洲自国产拍揄拍| 亚洲成熟丰满熟妇高潮XXXXX| 理论亚洲区美一区二区三区| 亚洲色大网站WWW永久网站| 亚洲午夜国产精品| 中文字幕亚洲码在线| 午夜亚洲国产理论片二级港台二级| 在线观看亚洲免费视频| 久久久久国产亚洲AV麻豆| 亚洲国产精品乱码一区二区| 久久丫精品国产亚洲av不卡| 亚洲免费视频观看|