MYSQL儲存引擎innodb和myisam的區別

2021-09-05 12:52:52 字數 1135 閱讀 8715

innodb:預設事務型引擎,最重要最廣泛的儲存引擎,效能非常優秀,資料庫儲存在共享表空間,可以通過配置分開。對主鍵查詢的效能高於其他型別的儲存引擎。它內部做了很多優化,從磁碟讀取資料時自動在記憶體構建hash(雜湊)索引,插入資料時自動構建插入緩衝區。它可以通過一些機制和工具支援真正的熱備份,支援崩潰後的安全恢復,支援行級鎖,支援外來鍵。

myisam:5.1版本前,myisam是預設的儲存引擎,擁有全文索引、壓縮、空間函式、不支援事務和行級鎖,不支援崩潰後的安全恢復。表儲存在兩個檔案,myd和myi。它設計簡單,某些場景下效能很好。

其他表引擎:archive、blackhole、csv、memory

優先選擇innodb,因為它的效能非常優秀。

mysql鎖機制:表鎖是日常開發當中常見的問題,因此也是面試當中最常見的考點,當多個查詢同一時刻進行資料修改時,就會產生併發控制的問題。

讀鎖:共享的,不堵塞,多個使用者可以同時讀乙個資源,互不干擾。

寫鎖:排他的,乙個寫鎖會阻塞其他的寫鎖和讀鎖,這樣可以只允許乙個人進行寫入,防止其他使用者讀取正在寫入的資源。

鎖力度:表鎖,系統效能開銷最小,會鎖定整張表,myisqm使用表鎖。行鎖,最大程度地支援併發處理,但是也帶來了最大的鎖開銷,innodb實現行級鎖。

mysql事務處理:mysql提供事務處理的表引擎,innodb。伺服器層不管理事務,由下層的引擎實現,所以同乙個事務中,使用多種儲存引擎不靠譜。在非事務的表上執行事務操作mysql不會發出提醒,也不會報錯。

儲存過程:為以後的使用而儲存的一條或多條nysql語句的集合。儲存過程就是有業務邏輯和流程的集合。

使用場景:通過把處理封裝在容易使用的單元中,簡化複雜的操作,保證資料的一致性。簡化對變動的管理。

使用場景:可通過資料庫中的相關表實現級聯更改。實時監控某張表中的某個字元按的更改而需要作出響應的處理,某些業務編號的生成等。如果濫用,就會造成資料庫及應用程式的維護困難。

MySQL儲存引擎 InnoDB

為什麼innodb不將總數存起來?innodb直接count 會遍歷全表 沒有where條件 雖然結果準確,但會導致效能問題。按照效率排序的話,count 字段 innodb一棵b 樹可以存放多少行資料?這個問題的簡單回答是 約2千萬。為什麼是這麼多呢?因為這是可以算出來的,要搞清楚這個問題,我們先...

MySQL的儲存引擎INNODB

1 一般情況下,mysql會預設提供多種儲存引擎,你可以通過下面的檢視 看你的mysql現在已提供什麼儲存引擎 mysql show engines 看你的mysql當前預設的儲存引擎 mysql show variables like storage engine 你要看某個錶用了什麼引擎 在顯示...

mysql的innodb儲存引擎

innodb是支援事務的儲存引擎,支援acid特性的acid 指資料庫事務正確執行的四個基本要素的縮寫 包含 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 durability 更適合處理大量的小事務,小事務正常都會被提交,很少會被回滾,在資料儲存的...