為什麼MyISAM會比Innodb的查詢速度快

2022-07-12 11:00:15 字數 664 閱讀 1033

innodb在做select的時候,要維護的東西比myisam引擎多很多:

1)資料塊,innodb要快取,myisam只快取索引塊,  這中間還有換進換出的減少;

2)innodb定址要對映到塊,再到行,myisam記錄的直接是檔案的offset,定位比innodb要快

3)innodb還需要維護mvcc一致;雖然你的場景沒有,但他還是需要去檢查和維護

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

select innodb必須每行資料來保證它符合兩個條件:

1、innodb必須找到乙個行的版本,它至少要和事務的版本一樣老(也即它的版本號不大於事務的版本號)。這保證了不管是事務開始之前,或者事務建立時,或者修改了這行資料的時候,這行資料是存在的。

2、這行資料的刪除版本必須是未定義的或者比事務版本要大。這可以保證在事務開始之前這行資料沒有被刪除

Redis為什麼會比MySQL快?

1.redis是基於記憶體儲存的,mysql是基於磁碟儲存的 2.redis儲存的是k v格式的資料。時間複雜度是o 1 常數階,而mysql引擎的底層實現是b tree,時間複雜度是o logn 對數階。redis會比mysql快一點點。3.mysql資料儲存是儲存在表中,查詢資料時要先對錶進行全...

Redis為什麼會比MySQL快?

1.redis是基於記憶體儲存的,mysql是基於磁碟儲存的 2.redis儲存的是k v格式的資料。時間複雜度是o 1 常數階,而mysql引擎的底層實現是b tree,時間複雜度是o logn 對數階。redis會比mysql快一點點。3.mysql資料儲存是儲存在表中,查詢資料時要先對錶進行全...

MySQL儲存引擎MyISAM與InnoDB的區別

一 innodb支援事務,myisam不支援,這一點是非常之重要。事務是一種高階的處理方式,如在一些列增刪改中只要哪個出錯還可以回滾還原,而myisam就不可以了。二 myisam適合查詢以及插入為主的應用,innodb適合頻繁修改以及設計到安全性就高的應用 三 innodb支援外來鍵,myisam...