MYISAM引擎和INNODB引擎的區別

2021-08-07 11:49:15 字數 1037 閱讀 3981

一、功能性的比較

1.innodb支援事務,支援外來鍵約束,是乙個事務性的儲存引擎、

表級鎖定的主要是myisam,memory,csv等一些非事務性儲存引擎

二、鎖的比較

(1)innodb主要應用於行級鎖(row-level)

(2)myisam主要應用於表級鎖(table-level)

三、各個鎖的比較

行級鎖定(row-level)(innodb應用較多)

行級鎖定最大的特點就是鎖定物件的顆粒度很小,也是目前各大資料庫管理軟體所實現的鎖定顆粒度最小的。由於鎖定顆粒度很小,所以發生鎖定資源爭用的概率也最小,能夠給予應用程式盡可能大的併發處理能力而提高一些需要高併發應用系統的整體效能。

雖然能夠在併發處理能力上面有較大的優勢,但是行級鎖定也因此帶來了不少弊端。由於鎖定資源的顆粒度很小,所以每次獲取鎖和釋放鎖需要做的事情也更多,帶來的消耗自然也就更大了。此外,行級鎖定也最容易發生死鎖。

和行級鎖定相反,表級別的鎖定是mysql各儲存引擎中最大顆粒度的鎖定機制。該鎖定機制最大的特點是實現邏輯非常簡單,帶來的系統負面影響最小。所以獲取鎖和釋放鎖的速度很快。由於表級鎖一次會將整個表鎖定,所以可以很好的避免困擾我們的死鎖問題。

當然,鎖定顆粒度大所帶來最大的負面影響就是出現鎖定資源爭用的概率也會最高,致使並大度大打折扣。

頁級鎖定是mysql中比較獨特的一種鎖定級別,在其他資料庫管理軟體中也並不是太常見。頁級鎖定的特點是鎖定顆粒度介於行級鎖定與表級鎖之間,所以獲取鎖定所需要的資源開銷,以及所能提供的併發處理能力也同樣是介於上面二者之間。另外,頁級鎖定和行級鎖定一樣,會發生死鎖。

隨著mysql儲存引擎的不斷發展,目前mysql自身提供的鎖定機制已經沒有辦法滿足需求了,很多儲存引擎都在mysql所提供的鎖定機制之上做了儲存引擎自己的擴充套件和改造(innodb自己實現行級鎖)。

Mysql引擎 Innodb和MyISAM的區別

本文是摘抄其他網文整理而成。create database engine innodb mysql 資料庫分為innodb和myisam兩類。兩者最主要的區別是 innodb支援事務處理 外來鍵和行級鎖.而myisam不支援,所以如果cud比較頻繁或要求事務一致性的,使用innodb比較好,反之使用...

InnoDB和MyISAM儲存引擎

mysql在檔案系統中將每個資料庫 也可以叫 schema 儲存為資料庫目錄下的乙個子目錄。建立表時,mysql會在資料庫子目錄下建立乙個和表同名的.frm檔案儲存表的定義。而 mysql會在資料庫子目錄下建立乙個和表同名的.frm檔案儲存表的定義。如 建立乙個名為a的表,mysql會在a.frm檔...

MyISAM和InnoDB引擎優化

一 公共選項 skip external locking 避免mysql的外部鎖定,減少出錯機率增強穩定性。skip name resolve 禁止mysql對外部連線進行dns解析,使用這一選項可以消除mysql進行dns解析的時間。但需要注意,如果開啟該選項,則所有遠端主機連線授權都要使用ip位...