mysql儲存引擎比較

2021-07-13 15:12:19 字數 3022 閱讀 6505

資料庫儲存引擎是資料庫底層軟體元件,資料庫管理系統使用資料引擎進行建立,查詢,更新,和刪除資料操作。不同的儲存引擎提供不同的儲存引擎機制,索引技巧,鎖定水平等功能,使用不同的儲存引擎,還可以獲得特定的功能,現在許多不同的資料庫管理系統都支援多種不同的資料引擎,mysql的核心就是儲存引擎。

innod引擎

innodb是事務型資料庫的首選引擎,支援事務安全表,支援行鎖定和外來鍵。mysql5.5.5之後,inndb作為預設儲存引擎,主要特性

1. innodb給mysql提供 了具有提交,回滾和崩潰恢復能力的事務安全(acid相容)儲存引擎。innodb鎖定在行級並且也在select語句提供乙個oracle風格一致的非 鎖定讀。這些特色增加 了多使用者部署和效能。沒有在innodb中擴大鎖定的需要,因為在innodb中行級鎖定適合非常小的空間。innodb也支援foreign key強制。在sql查詢中,你可以自由地將innodb型別的表與其它mysql的表的型別混合起來,甚至在同乙個查詢中也可以混合。

2.innodb是為處理巨大資料量時的最大效能設計。它的cpu效率可能是任何其它基於磁碟的關聯式資料庫引擎所不能匹敵的。

3.innodb儲存引擎被完全與mysql伺服器整合,innodb儲存引擎為在主記憶體中快取資料和索引而維持它自己的緩衝池。 innodb儲存它的表&索引在乙個表空間中,表空間可以包含數個檔案(或原始磁碟分割槽)。這與myisam表不同,比如在myisam表中每個表被存在 分離的檔案中。innodb 表可以是任何尺寸,即使在檔案尺寸被限制為2gb的作業系統上。

4.innodb支援外來鍵完整性約束

儲存表中的資料時,每張表的儲存都按主鍵順序存放,如果沒有顯示在表定義時指定主鍵innodb會為每一行生成乙個6b的rowid,並以此作為主鍵。

5.innodb被用來在眾多需要高效能的大型資料庫站點上產生。

myisam儲存引擎

myisam基於isam儲存引擎,並對其進行擴充套件。它是在web,資料倉儲,和其它應用環境下最常用的儲存引擎,它擁有較高的插入,查詢速度,但不支援事務,在5.5,5之前的版本中,myisam是預設引擎。

●所有資料值先儲存低位元組。這使得資料機和作業系統分離。二進位制輕便性的唯一要求是機器使用補碼(如最近20年的機器有的一樣)和ieee浮點格式(在主流機器中也完全是主導的)。唯一不支援二進位制相容性的機器是嵌入式系統。這些系統有時使用特殊的處理器。

●先儲存資料低位元組並不嚴重地影響速度;資料行中的位元組一般是未聯合的,從乙個方向讀未聯合的位元組並不比從反向讀更占用更多的資源。伺服器上的獲取列值的**與其它**相比並不顯得時間緊。

●大檔案(達63位檔案長度)在支援大檔案的檔案系統和作業系統上被支援。

●當把刪除和更新及插入混合的時候,動態尺寸的行更少碎片。這要通過合併相鄰被刪除的塊,以及若下乙個塊被刪除,就擴充套件到下一塊來自動完成。

●每個myisam表最大索引數是64。 這可以通過重新編譯來改變。每個索引最大的列數是16個。

●最大的鍵長度是1000位元組。這也可以通過編譯來改變。對於鍵長度超過250位元組的情況,乙個超過1024位元組的的鍵塊被用上。

●blob和text列可以被索引。

●null值被允許在索引的列中。這個佔每個鍵的0-1個位元組。

●所有數字鍵值以高位元組為先被儲存以允許乙個更高地索引壓縮。

●當記錄以排好序的順序插入(就像你使用乙個auto_increment列之時),索引樹被劈開以便高節點僅包含乙個鍵。這改善了索引樹的空間利用率。

●每表乙個auto_incremen列的內部處理。myisam為insert和update操作自動更新這一 列。這使得auto_increment列更快(至少10%)。在序列頂的值被刪除之後就不能再利用。(當auto_increment列被定義為多列索 引的最後一列,可以出現重使用從序列頂部刪除的值的情況 )。auto_increment值可用alter table或myisamch來重置。

●如果資料檔案中間的表沒有自由塊了,在其它執行緒從表讀的同時,你可以insert新行到表中。(這被認識為併發操作 )。自由塊的出現是作為刪除行的結果,或者是用比當前內容多的資料對動態長度行更新的結果。當所有自由塊被用完(填滿),未來的插入又變成併發。

●你可以把資料檔案和索引檔案放在不同目錄,用data directory和index directory選項create table以獲得更高的速度,請參閱13.1.5節,「create table語法」。

●每個字元列可以又不同的字符集。

●在myisam索引檔案裡又乙個標誌,它表明表是否被正確關閉。如果用–myisam-recover選項啟動mysqld,myisam表在開啟得時候被自動檢查,如果被表被不恰當地關閉,就修復表。

●如果你用–update-state選項執行myisamchk,它標註表為已檢查。myisamchk –fast只檢查那些沒有這個標誌的表。

●myisamchk –analyze為部分鍵儲存統計資訊,也為整個鍵儲存統計資訊。

使用myisam引擎建立資料庫將產生3個檔案 :frm檔案儲存表定義,資料副檔名.myd,索引副檔名。myi

memory儲存引擎

memory:將所有資料儲存在ram中,在需要快速查詢引用和其他類似資料的環境下,可提供極快的訪問。

1.memory表的每個表可以多達32個索引,每個索引16列,以及500b的值。

2.memory儲存引擎執行hasht和brtee索引

3.可以在乙個memory表中有唯一鍵

4.memor表使用乙個固定的記錄長度格式

5.memory不支援blob或text列

6.memory表在所有客戶端之間共享

7.memory表內容被存在記憶體中,記憶體是memory表和伺服器在查詢處理時的空閒中建立的內部表共享

8.當不要memory表的內容時。要放棄被memory表使用的記憶體。應該執行delete from 或truncate table ,或者刪除整個表(使用drop table);

MySQL儲存引擎比較

mysql常用的儲存引擎為myisam innodb memory merge,其中innodb提供事務安全表,其他儲存引擎都是非事務安全表。myisam是mysql的預設儲存引擎。myisam不支援事務 也不支援外來鍵,但其訪問速度快,對事務完整性沒有要求。innodb儲存引擎提供了具有提交 回滾...

MySQL各儲存引擎比較

feature特性 myisam innodb bdb memory archive ndb storage limits儲存限制 no64tb noyes noyes transactions事務支援 commit,rollback,etc.vv locking granularity鎖級別 ta...

mysql 各種儲存引擎效能比較

1 測試環境 cpu 2ghz 記憶體 2gb 區域網 開乙個長連線,構造隨機查詢條件。2 測試結果 資料量 88171條 qps query per second 引擎型別 網域名稱 快取 qps 不快取 qps innodb innodb.abc.com 7125.467573 11.12710...