MySQL是目前市面上非常常用的关系型数据库,就不过多介绍其产品特征了,这个也网上一搜一大堆。
今天我们主要来说一下MySQL的存储引擎,MySQL的存储引擎有好多种,平时我们用的最多,也是企业级系统中使用最广泛的就是MyISAM存储引擎和InnoDB存储引擎了。
当然了,其他的存储引擎是可以通过MySQL的SQL语句来查询出来的。
SQL如下:
show engines;
下面就来看看MyISAM存储引擎和InnoDB存储引擎的特点吧。
MyISAM存储引擎
MyISAM存储引擎自身的并发性比较差,这就很大程度导致了其使用的场景比较少。
不支持事务操作
因为其不支持事务操作,所以也就不存在事务的四大原则了,抛弃了事务操作,当然在一些场景下性能会提高很多。
不支持外键操作
不是不能设置外键,而是设置了外键不生效。
锁:表级锁
因为其默认的锁粒度是表级锁,所以就必然会导致其处理并发时性能会变差,试想如果多个并发请求同时访问一张表,这个时候因为表级锁,只能一个个的去处理请求。
但是这里也有个优点,就是加锁快,锁之间的冲突少,很少产生死锁的问题。
支持索引类型
MyISAM支持的索引类型有全局索引、B-TREE索引、R-TREE索引。
Select性能较高
适用于查询较多的情况
InnoDB存储引擎
支持事务操作
支持事务操作,默认隔离级别是可重复读,能够解决脏读和不可重复读的问题。
支持外键
支持外键。
锁:行级锁
InnoDB存储引擎支持锁粒度为行级锁,大大提升了并发性能,但是会存在出现死锁的情况。
索引类型
索引类型与MyISAM存储引擎相同,但是具体实现不同。
增删改性能较好
适用于增删改多的场景。