mysql資料庫的常用引擎和對比

2021-10-01 12:39:10 字數 2517 閱讀 5814

innodb引擎,mysql的預設引擎

特點:1、

innodb給mysql提供了具有提交、回滾和崩潰恢復能力的事物安全(acid相容)儲存引擎

innodb鎖定在行級並且也在select語句中提供乙個類似oracle的非鎖定讀。這些功能增加了多使用者部署和效能。在sql查詢中,可以自由地將innodb型別的表和其他mysql的表型別混合起來,甚至在同乙個查詢中也可以混合

2、innodb是為處理巨大資料量的最大效能設計。它的cpu效率可能是任何其他基於磁碟的關係型資料庫引擎鎖不能匹敵的

2,提供了行級鎖和外來鍵的約束

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

6、innodb被用在眾多需要高效能的大型資料庫站點上

innodb不建立目錄,使用innodb時,mysql將在mysql資料目錄下建立乙個名為ibdata1的10mb大小的自動擴充套件資料檔案,以及兩個名為ib_logfile0和ib_logfile1的5mb大小的日誌檔案

4,不支援全文搜尋的

5,不會儲存表的行數的。當進行select count(*) from table指令的時候,需要進行掃瞄全表

6,可以利用資料日誌來進行資料的恢復

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

8,清空整個表時,innodb 是一行一行的刪除,效率非常慢

應用場景:

大容量的資料集時趨向於選擇innodb。因為它支援事務處理和故障的恢復。由於鎖的粒度小,寫操作是不會鎖定全表的。所以在併發度較高的場景下使用會提公升效率的。

myiasm引擎

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

2,不提供事務的支援

3,不支援行級鎖,當執行insert插入和update更新語句時,即執行寫操作的時候需要鎖定這個表,效率會降低

4,不支援外來鍵

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

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

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

5、blob和text列可以被索引

6、null被允許在索引的列中,這個值佔每個鍵的0~1個位元組

7、所有數字鍵值以高位元組優先被儲存以允許乙個更高的索引壓縮

8、每個myisam型別的表都有乙個auto_increment的內部列,當insert和update操作的時候該列被更新,同時auto_increment列將被重新整理。所以說,

myisam型別表的auto_increment列更新比innodb型別的auto_increment更快

9、可以把資料檔案和索引檔案放在不同目錄

10、每個字元列可以有不同的字符集

11、有varchar的表可以固定或動態記錄長度

12、varchar和char列可以多達64kb

使用myisam引擎建立資料庫,將產生3個檔案。檔案的名字以表名字開始,副檔名之處檔案型別:frm檔案儲存表定義、資料檔案的擴充套件名為.myd(mydata)、索引檔案的副檔名時.myi(myindex)

應用場景:

表的讀操作遠遠多於寫操作時,並且不需要事務的支援的。可以將myiasm作為資料庫引擎的首先。

memory儲存引擎

memory儲存引擎將表中的資料儲存到記憶體中,未查詢和引用其他表資料提供快速訪問。memory主要特性有:

1、memory表的每個表可以有多達32個索引,每個索引16列,以及500位元組的最大鍵長度

2、memory儲存引擎執行hash和btree縮影

3、可以在乙個memory表中有非唯一鍵值

4、memory表使用乙個固定的記錄長度格式

5、memory不支援blob或text列

6、memory支援auto_increment列和對可包含null值的列的索引

7、memory表在所由客戶端之間共享(就像其他任何非temporary表)

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

9、當不再需要memory表的內容時,要釋放被memory表使用的記憶體,應該執行delete from或truncate table,或者刪除整個表(使用drop table)

應用場景:

如果只是臨時存放資料,資料量不大,並且不需要較高的資料安全性,可以選擇將資料儲存在記憶體中的memory引擎,

mysql資料庫引擎 mysql資料庫引擎

資料庫引擎是用於儲存 處理和保護資料的核心服務。利用資料庫引擎可控制訪問許可權並快速處理事務,從而滿足企業內大多數需要處理大量資料的應用程式的要求。使用資料庫引擎建立用於聯機事務處理或聯機分析處理資料的關聯式資料庫。這包括建立用於儲存資料的表和用於檢視 管理和保護資料安全的資料庫物件 如索引 檢視和...

MySQL資料庫常用儲存引擎

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

MySQL資料庫引擎

如果你是個賽車手並且按一下按鈕就能夠立即更換引擎而不需要把車開到車庫裡去換,那會是怎麼感覺呢?mysql資料庫為開發人員所做的就好像是按按鈕換引擎 它讓你選擇資料庫引擎,並給你一條簡單的途徑來切換它。mysql的自帶引擎肯定是夠用了,但是在有些情況下,其他的引擎可能要比手頭所用更適合完成任務。如果願...