MySQL存储引擎

MySQL提供了插件式(可插拔)多个的存储引擎(innoDB,MyIsAM,Memory,DBD …)
ORACEL 和 SQL server只有一种引擎

一. 存储引擎的作用

存储数据,建立索引,更新查询数据等技术的实现方式,存储引擎是基于表的,而不是基于库,所以存储引擎也称之为表类型

查询当前数据库支持的存储引擎
1.show engines;

查询MySQL数据库默认的存储引擎
1.show variables like ‘%storage_engine%’;

查看表的存储引擎

  1. show table status like “表名”;

存储引擎的特性
特点 InnoDB MyISAM MEMORY MERGE NDB
存储限制 64TB 有 有 没有 有
事务安全 支持
支持外键 支持
锁机制 行锁(适合高并发) 表锁 表锁 表锁 行锁
B树索引 支持 支持 支持 支持 支持
哈希索引 支持
全文索引 支持(5.6版本之后) 支持
集群索引 支持
内存使用 高 低 中等 低 高
批量插入速度 低 高 高 高 高

二. InnoDB和MyIsAM的区别

区别一:版本支持
InnoDB存储引擎是MYSQL 5.5以后默认的存储引擎, 5.5之前的版本默认的是MyIsAM存储引擎

区别二:事务控制
需求: 在InnoDB类型的表和MyIsAM类型的表中分别实现增加记录
因为mysql默认自动提交事务,所以我们如果要演示事务控制,那么需要临时开启手动事务

  1. start transaction;

启动两个MYSQL客户端
A端在InnoDB引擎的表中 insert into 但不commit;
B端去查询数据, 是查询不到的, 因为A端没有提交事务.
这也就证明了, InnoDB是存在事务控制的.

A端在MyIsAM引擎的表中 insert into 但不commit;
B端去查询数据, 是可以查询到的, 因为MyIsAM引擎不支持事务

区别三: 支持外键
如果表有外键关联,那么在删除主表时,是不被允许的
是因为表类型为InnoDB ,他是支持外键约束的
MyIsAM存储引擎根本设置不了外键.因为不支持.

区别四: 锁级别
InnoDB 支持行级锁(默认) ,也支持表锁
MyIsAM支持表锁

区别五: MVCC
InnoDB支持MVCC,应对高并发事务. MVCC比单纯的加锁更高效.
MyIsAM不支持

你可能感兴趣的:(虚拟机)