## 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