MySql之儲存引擎

2021-09-07 23:30:07 字數 1290 閱讀 7382

和大多數的資料庫不同mysql中有乙個儲存引擎的概念針對不同的儲存需求可以選擇最優的儲存引擎。

儲存引擎就是儲存資料,建立索引,更新查詢資料等等技術的實現方式。儲存引擎是基於表的,而不是基於庫的。所以儲存引擎也可被稱為表型別。

oracle, sqlserver等資料庫只有一種儲存引擎。mysql提供了外掛程式式的儲存引擎架構。所以mysql存在多種儲存引擎,可以根據需要使用相應引擎,或者編寫儲存引擎。

mysql5.0支援的儲存引擎包含: innodb、myisam、bdb、memory、merge、example、ndb cluster、archive、csv、blackhole、federated等,其中 innodb和bdb提供事務安全表,其他儲存引擎是非事務安全表。

myisam 是 mysql 5.5.5 之前的預設引擎,它支援 b-tree/fulltext/r-tree 索引型別。

鎖級別為表鎖,表鎖優點是開銷小,加鎖快;缺點是鎖粒度大,發生鎖衝動概率較高,容納併發能力低,這個引擎適合查詢為主的業務。此引擎不支援事務(索引與資料分開儲存,兩個檔案無法做到一致性),不支援行級鎖,也不支援外來鍵。myisam強調了快速讀取操作。它儲存表的行數,於是select count(*) from table時只需要直接讀取已經儲存好的值而不需要進行全表掃瞄。

innodb 儲存引擎最大的亮點一是支援事務,二是支援行級鎖,三是支援外來鍵

併發事務處理也會帶來一些問題,髒讀,不可重複讀,幻讀,這需要事務隔離級別來解決。(

行鎖優點是適用於高併發的頻繁表修改,高併發是效能優於 myisam。缺點是系統消耗較大,索引不僅快取自身,也快取資料,相比 myisam 需要更大的記憶體。(

innodb 中不儲存表的具體行數,也就是說,執行 select count(*) from table時,innodb 要掃瞄一遍整個表來計算有多少行。

memory 是記憶體級別儲存引擎,資料儲存在記憶體中,所以他能夠儲存的資料量較小。

因為記憶體的特性,儲存引擎對資料的一致性支援較差。鎖級別為表鎖,不支援事務。但訪問速度非常快,並且預設使用 hash 索引。

memory儲存引擎使用存在記憶體中的內容來建立表,每個memory表只實際對應乙個磁碟檔案,在磁碟中表現為.frm檔案。

在選擇儲存引擎時,應該根據應用系統的特點擊擇合適的儲存引擎。對於複雜的應用系統,還可以根據實際情況選擇多種儲存引擎進行鉏合。以下是幾種常用的儲存引擎的使用環境。

Mysql 儲存引擎之 MyISAM儲存引擎

myisam是預設儲存引擎。每個myisam在磁碟上儲存成三個檔案。frm檔案儲存表定義 myd檔案儲存資料 myi檔案儲存索引。要明確表示你想要用乙個myisam 請用engine表選項指出來 create table test myisam id int engine myisam 2 如下是m...

MySQL之儲存引擎

這幾天研習mysql資料庫的儲存引擎,以便能更深層次的掌握mysql這個優秀的資料庫。首先,mysql資料庫獨有的外掛程式式儲存引擎架構使得它有別於其他任何資料庫,其中不同的儲存引擎有著完全不同的功能和效能。mysql表儲存引擎主要有 innodb儲存引擎,myisam儲存引擎,ndb儲存引擎,me...

MySQL之儲存引擎

1.檢視某個資料表的命令 show create table tbl name mysql可以將資料以不同的技術儲存在檔案 記憶體 中,這種技術就稱為儲存引擎。每一種儲存引擎使用不同的儲存機制 索引技巧 鎖定水平,最終提供廣泛且不同的功能。mysql支援的儲存引擎有 myisam 適用於事物的處理不...