資料庫的引擎非常之多,在mysql資料庫中存在著多種引擎(不同版本的mysql資料庫支援的引擎不同),熟悉各種引擎才能在軟體開發中應用引擎,從而開發出高效能的軟體,mysql資料庫中的引擎有哪些呢?一般來說,mysql有以下幾種引擎:isam、myisam、heap(也稱為memory)、csv、blackhole、archive、performance_schema、innodb、 berkeley、merge、federated和cluster/ndb等,除此以外我們也可以參照mysql++ api建立自己的資料庫引擎。
這裡介紹兩種常用引擎:myisam和innodb(目前mysql預設的引擎)
1.innodb引擎,inndbb引擎提供了對資料庫acid事務的支援。並且還提供了行級鎖和外來鍵的約束。它的設計的目標就是處理大資料容量的資料庫系統。它本身實際上是基於mysql後台的完整的系統。mysql執行的時候,innodb會在記憶體中建立緩衝池,用於緩衝資料和索引。但是,該引擎是不支援全文搜尋的。同時,啟動也比較的慢,它是不會儲存表的行數的。當進行select count(*) from table指令的時候,需要進行掃瞄全表。所以當需要使用資料庫的事務時,該引擎就是首選。由於鎖的粒度小,寫操作是不會鎖定全表的。所以在併發度較高的場景下使用會提公升效率的。
2.myisam引擎,它是mysql的預設引擎,但不提供事務的支援,也不支援行級鎖和外來鍵。因此當執行insert插入和update更新語句時,即執行寫操作的時候需要鎖定這個表。所以會導致效率會降低。不過和innodb不同的是,myisam引擎是儲存了表的行數,於是當進行select count(*) from table語句時,可以直接的讀取已經儲存的值而不需要進行掃瞄全表。所以,如果表的讀操作遠遠多於寫操作時,並且不需要事務的支援的。可以將myisam作為資料庫引擎的首先。
大容量的資料集時趨向於選擇innodb。因為它支援事務處理和故障的恢復。innodb可以利用資料日誌來進行資料的恢復。主鍵的查詢在innodb也是比較快的。
d.大批量的插入語句時(這裡是insert語句)在myisam引擎中執行的比較的快,但是update語句在innodb下執行的會比較的快,尤其是在併發量大的時候。
2.兩種引擎所使用的索引的資料結構是什麼?
答案:都是b+樹!
myisam引擎,b+樹的資料結構中儲存的內容實際上是實際資料的位址值。也就是說它的索引和實際資料是分開的,只不過使用索引指向了實際資料。這種索引的模式被稱為非聚集索引。
innodb引擎的索引的資料結構也是b+樹,只不過資料結構中儲存的都是實際的資料,這種索引有被稱為聚集索引。
mysql 的儲存引擎種類 以及分類 區別
這裡主要介紹幾種常用的儲存引擎種類 myisam innodb memory merge tokudb 1.myisam 是舊版本mysql的預設引擎,現在預設引擎是innodb。myisam引擎的主要特點就是快,沒有事務處理操作,也不支援外來鍵操作。適合於多讀取插入,少更新刪除的操作表。儲存資料分...
Mysql的兩種儲存引擎以及區別
一 mysql的兩種儲存引擎 1 myisam 不支援事務,但是整個操作是原子性的 事務具備四種特性 原子性 一致性 隔離性 永續性 不支援外來鍵,支援表鎖,每次所住的是整張表 myisam的表鎖有讀鎖和寫鎖 兩個鎖都是表級別 表共享讀鎖和表獨佔寫鎖。在對myisam表進行讀操作時,不會阻塞其他使用...
MySql五大引擎的區別以及優劣之分
五大引擎 一 myisam 在建立myisam的時候會出來三個預設的檔案 1.tb demo.frm,儲存表定義 2.tb demo.myd,儲存資料 3.tb demo.myi,儲存索引。因為myisam表有無法處理事務,所以它只適合在一下幾種情況下使用 1.選擇密集型的表。myisam儲存引擎在...