1.MySQL常用引擎有哪些?
A:MySQL常用的引擎有InnoDB、MyISAM、Memory,默认时InnoDB
InnoDB:磁盘表,支持事务,支持行级锁,B+Tree索引
优点:具有良好的ACID特性(指数据库事务正确执行的四个基本要素的缩写)
包含Atomicity原子性、Consistency一致性、Isolation隔离性、Durability持久性。
适用于高并发,更新操作比较多的表,需要用事务的表。
对自动灾难恢复有要求的表。
缺点:读写效率相对MyISAM较差。占用的磁盘空间较大。
MyISAM:磁盘表,不支持事务,支持表级锁,B+Tree索引
优点:占用空间小,处理速度快(相对InnoDB来说)
缺点:不支持事务的完整性和并发性
MEMORY(堆):内存表,不支持事务,表级锁,Hash(键值存储数据的结构)索引,不支持Blob,Text大类型
优点:速度要求快的,临时数据
缺点:丢失以后,对项目整体没有或者负面影响不大的时候。
B+Tree的定义:
B+Tree是B树的变种,有着比B树更高的查询性能,来看下m阶B+Tree特征:
1.有m个子树的结点包含有m个元素(bTree中是m-1)
2.根节点和分支节点中不保存数据,只用于索引,所有数据都保存在叶子节点中。
3.所有分支节点和根节点都同时存在于子节点中,在子节点元素中是最大或者最小的元素。
4.叶子节点包含所有的关键字,以及指向数据记录的指针,并且叶子节点本身是根据关键字大小从小到大顺序链接。