MySQL的強大之處在于它的插件式存儲引擎,我們可以基于表的特點使用不同的存儲引擎,從而達到最好的性能。
如果你足夠熟悉,并且有一定工作經驗后。你還可以使用阿里巴巴和網易開源出來的MySQL引擎在自己的服務器中使用。
大家在后面的一節《數據庫結構定義語句》中可以學到創建表的語句。mysql在創建表的時候,可以指定對應的引擎。
在mysql命令中使用:
> show engines;
可以查看到當前服務器支持的所有引擎。
我們介紹幾種常用的引擎和了解幾個不常用的引擎。避免未來在實際工作中看到一些引擎不知道概念。
| 引擎名稱 | 特別 |
| -- | -- |
| MyISAM | 常用。讀取效率很高的引擎 |
| InnoDB | 常用。寫入,支持事處等都支持 |
|Archive | 不常用。歸檔引擎,壓縮比高達1:10,用于數據歸檔|
| NDB| 不常用。主要在MySQL 集群服務器中使用,不做介紹 |
##MyISAM
不支持事務,表鎖(表級鎖,加鎖會鎖住整個表),支持全文索引,操作速度快。常用于讀取多的業務。
1. myisam存儲引擎表由myd和myi組成。.myd用來存放數據文件,.myi用來存放索引文件。
2. 對于myisam存儲引擎表,mysql數據庫只緩存其索引文件,數據文件的緩存由操作系統本身來完成。
##InnoDB
1. 支持事務,主要面向在線事務處理(OLTP)方面的應用。
2. 行鎖設計,支持外鍵,即默認情況下讀取操作不加鎖。
InnoDB是為處理巨大數據量時的最大性能設計。
***
注:
行鎖:寫入、更新操作的時候將這一行鎖起來,不讓其他人再操作了。
表鎖:寫入、更新操作時,將表給鎖起來不讓其他人再操作了。
事務:同時操作多個數據,若其中的一個數據操作失敗。可回滾到操作之前。常用于銀行、電商、金融等系統中。