## InnoDB
>* 默認事務型引擎,最重要最廣泛的存儲引擎,性能非常優秀
>* 數據存儲在共享表空間,可以通過配置分開
>* 對主鍵查詢對性能高于其他類型對存儲引擎
>* * InnoDB要求表必須有主鍵(MyISAM可以沒有),如果沒有顯式指定,則MySQL會自動選擇一個可以唯一標識數據記錄的列作為主鍵,如果不存在這種列,則MySQL自動為InnoDB表生成一個隱含字段作為主鍵,這個字段長度為6個字節,類型為長整形。
>* * InnoDB的數據文件本身就是索引文件。表數據文件本身就是按B+Tree組織的一個索引結構,這棵樹的葉節點data域保存了完整的數據記錄。這個索引的key是數據表的主鍵,因此InnoDB表數據文件本身就是主索引。
>* 內部做了很多優化,從磁盤讀取數據時自動在內存構建`hash`索引,插入數據時自動構建插入緩沖區
>* 支持崩潰后的安全恢復
>* 支持行級鎖:一定作用在索引上
> ```
>行鎖也不是絕對的
>如果在執行一個SQL語句時MySQL不能確定要掃描的范圍,
>InnoDB表同樣會鎖全表,
>例如update table set num=1 where name like "%aaa%"
>```
>* 支持外鍵
## MyISAM
>* 5.1 版本前,MyISAM是默認的存儲引擎
>* 擁有`全文索引` `壓縮` `空間函數`
>* 不支持 `事務` 和 `行級鎖` 不支持崩潰后的安全恢復
>* 表存儲在兩個文件,MYD(數據)和MYI(索引)
>* 設計簡單,某些場景下性能很好
>* MyISAM引擎使用B+Tree作為索引結構,葉節點的data域存放的是數據記錄的地址。
>* * MyISAM中索引檢索的算法為首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,則取出其data域的值,然后以data域的值為地址,讀取相應數據記錄。
InnoDB 和 MyISAM 對比 [MySQL存儲引擎InnoDB與Myisam的六大區別](https://www.runoob.com/w3cnote/mysql-different-nnodb-myisam.html)。
## 其他表引擎
`Archive` `Blackhole` `CSV` `Memory`
>建議 優先使用 InnoDB表引擎,性能優秀
- 簡介
- PHP
- 字符串函數
- 數組函數
- 正則
- 加密函數
- 面向對象
- 關鍵字
- 設計模式
- 魔術方法
- 機制擴展
- 會話機制
- PHP框架
- laravel
- 問題
- swoole
- easyswoole
- workerman
- 數據庫
- Sphinx
- MongoDB
- MemCache
- Redis
- 基礎操作
- 數據類型
- 持久化
- 分布式鎖
- 內存模型
- redis高級特性
- MySql
- 基礎操作
- 數據類型
- 數據表引擎
- 鎖機制
- 事務處理
- 存儲過程
- 觸發器
- 索引
- 關聯查詢
- 分析SQL語句-優化查詢
- 分區分表
- 主從復制
- MySql安全性
- 網絡協議
- HTTP
- header詳解
- 狀態碼
- nginx-配置
- 邏輯算法
- 時間和空間復雜度
- 常見算法
- 數據結構
- 核心
- 進程、線程、協程
- 存儲容量-計量單位
- 開發軟件及配置
- 版本控制器
- Git
- Fidder
- Fidder-Android7
- 自動化部署
- Jenkins
- supervisor
- Elasticsearch
- LogStash
- RabbitMQ
- AB測試
- JAVA-JDK
- FileBeat
- PhpStorm
- Composer
- Linux
- API安全
- 高并發及大流量相關概念
- 網站優化
- WEB
- Electron