isam、myisam、heap(也稱為memory)、csv、blackhole、archive、performance_schema、innodb、
berkeley、merge、federated和cluster/ndb等。
該引擎基於isam資料庫引擎,除了提供isam裡所沒有的索引和字段管理等大量功能,
myisam還使用一種**鎖定的機制來優化多個併發的讀寫操作
myisam:只支援表級鎖,不支援行鎖。
1.使用者在操作myisam表時,select,update,delete,insert語句都會給表自動加鎖
讀取時對需要讀到的所有表加鎖,寫入時則對錶加排他鎖( 排他鎖:用於資料修改操作,例如 insert、update 或 delete。確保不會同時同一資源進行多重更新。如果事務t對資料a加上排他鎖後,則其他事務不能再對a加任任何型別的封鎖。獲准排他鎖的事務既能讀資料,又能修改資料。
我們在運算元據庫的時候,可能會由於併發問題而引起的資料的不一致性(資料衝突)。)
2.不支援事務
3.不支援外來鍵
4.不支援崩潰後的安全恢復
5.在表有讀取查詢的同時,支援往表中插入新紀錄
6.支援blob和text的前500個字元索引,支援全文索引
7.支援延遲更新索引,極大地提公升了寫入效能
8.對於不會進行修改的表,支援 壓縮表 ,極大地減少了磁碟空間的占用
1.該儲存引擎為mysql表提供了acid事務支援、系統崩潰修復能力和多版本併發控制(即mvcc multi-version concurrency control)的行級鎖;
2,該引擎支援自增長列,自增長列的值不能為空,如果在使用的時候為空則自動從現有值開始增值,如果有但是比現在的還大,則直接儲存這個值;
3.該引擎儲存引擎支援外來鍵,外來鍵所在的表稱為子表而所依賴的表稱為父表。該引擎在5.5後的mysql資料庫中為預設儲存引擎。
innodb的行鎖,只是在where的主鍵是有效的,非主鍵的where都會鎖全表的。
4.支援行鎖,採用mvcc來支援高併發,有可能死鎖
5.支援事務
6.支援外來鍵
7.支援崩潰後的安全恢復
8.不支援全文索引
myisam更適合讀密集的表,而innodb更適合寫密集的的表。
在資料庫做主從分離的情況下,經常選擇myisam作為主庫的儲存引擎。
如果需要事務支援,並且有較高的併發讀取頻率(myisam的表鎖的粒度太大,所以當該表寫併發量較高時,要等待的查詢就會很多了),這時選innodb是不錯的。
如果你的資料量很大(myisam支援壓縮特性可以減少磁碟的空間占用),而且不需要支援事務時,myisam是最好的選擇。
面試常問MySQL效能優化問題
知識綜述 1 mysql中鎖的種類 常見的表鎖和行鎖,也有metadata lock等等,表鎖是對一整張表加鎖,分為讀鎖和寫鎖,因為是鎖住整張表,所以會導致併發能力下降,一般是做ddl處理時使用。行鎖則是鎖住資料行,這種加鎖方法比較複雜,但是由於只鎖住有限的資料,對於其它資料不加限制,所以併發能力強...
面試常問MySQL效能優化問題
知識綜述 1 mysql中鎖的種類 常見的表鎖和行鎖,也有metadata lock等等,表鎖是對一整張表加鎖,分為讀鎖和寫鎖,因為是鎖住整張表,所以會導致併發能力下降,一般是做ddl處理時使用。行鎖則是鎖住資料行,這種加鎖方法比較複雜,但是由於只鎖住有限的資料,對於其它資料不加限制,所以併發能力強...
MySQL常問鎖的面試題
鎖 lock 在多人處理同乙個資料的時候,保證每次只有乙個人可以操作。mysql提供了頁鎖 全域性鎖 行鎖 表鎖。其中innodb採用的是行鎖和表鎖,myisam只支援表鎖。是指二個或者二個以上的程序在執行時候,因為爭奪資源造成相互等待的現象,程序一直處於等待中,無法得到釋放,這種狀態就叫做死鎖,批...