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

歡迎訪問 生活随笔!

生活随笔

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

数据库

MySQL 中 MyISAM 中的查询为什么比 InnoDB 快?

發布時間:2025/3/21 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 中 MyISAM 中的查询为什么比 InnoDB 快? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL 中 MyISAM 中的查詢為什么比 InnoDB 快?

關于,這個問題,我網上看了很多答案。大多內容都雷同,但是我要強調的是,并不是說 MYISAM 一定比 InnoDB 的 select 快。

其實呢?MyISAM 適合讀多,并發少的場景;這個問題要分場景來看。不同的場景,還真不能說 MyISAM 比 InnoDB 中的查詢快!

下面我們一起來看看 Innodb 和 Myisam 的 5 大區別:

上面的“事務”寫錯了。不過,我相信大家能看明白其中的解釋。

關于“行鎖”還是“表鎖”,可以看我的這篇文章《InnoDB 的 select 行鎖還是表鎖》。

關于 count 的區別,可以看我的這篇文章《你真的懂 select count(*) 嗎?》。

那么為什么大家喜歡說 MyisAM 查詢快呢?那是因為,InnoDB 的表是根據主鍵進行展開的 B+tree 的聚集索引。MyIsam 則非聚集型索引,myisam 存儲會有兩個文件,一個是索引文件,另外一個是數據文件,其中索引文件中的索引指向數據文件中的表數據。

聚集型索引并不是一種單獨的索引類型,而是一種存儲方式,InnoDB 聚集型索引實際上是在同一結構中保存了 B+tree 索引和數據行。當有聚簇索引時,它的索引實際放在葉子頁中。

結合上圖,可以看出:INNODB 在做 SELECT 的時候,要維護的東西比 MYISAM 引擎多很多。

InnoDB:通過為每一行記錄添加兩個額外的隱藏的值來實現 MVCC,這兩個值一個記錄這行數據何時被創建,另外一個記錄這行數據何時過期(或者被刪除)。但是 InnoDB 并不存儲這些事件發生時的實際時間,相反它只存儲這些事件發生時的系統版本號。這是一個隨著事務的創建而不斷增長的數字。每個事務在事務開始時會記錄它自己的系統版本號。每個查詢必須去檢查每行數據的版本號與事務的版本號是否相同。讓我們來看看當隔離級別是 REPEATABLEREAD 時這種策略是如何應用到特定的操作的:

SELECT InnoDB 必須每行數據來保證它符合兩個條件:

說白了,為什么現在一些人喜歡 NoSQL 呢?因為 nosql 本身似乎應該是以省去解析和事務鎖的方式來提升效能。MYISAM 不支持事務,也是它查詢快的一個原因!

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的MySQL 中 MyISAM 中的查询为什么比 InnoDB 快?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。