1,什么是存储引擎?
简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式。数据库存储引擎是数据库底层软件组件, 数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、 索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。
MySQL 提供了多个不同的存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在 MySQL 中, 不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。
2,MySQL引擎分类
MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、 BLACKHOLE 等。
如何选择 MySQL 存储引擎 不同的存储引擎都有各自的特点,以适应不同的需求,如表所示。为了做出选择,首先要考虑每一个存储引擎提 供了哪些不同的功能。
3,MySQL存储引擎MyISAM与InnoDB区别
1)InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改 中只要哪个出错还可以回滚还原,而MyISAM就不可以了。 2)MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用 3)InnoDB支持外键,MyISAM不支持 4)从MySQL5.5.5以后,InnoDB是默认引擎 5)InnoDB不支持FULLTEXT类型的索引 6)InnoDB中不保存表的行数,如select count(*) from table时,InnoDB需要扫描一遍整个表来计算有多少行, 但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时MyISAM也需要 扫描整个表。 7)对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联 合索引
8)清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表。 9)InnoDB支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like '%lee%' 有人说MYISAM只能用于小型应用,其实这只是一种偏见。 如果数据量比较大,这是需要通过升级架构来解决,比如分表分库,读写分离,而不是单纯地依赖存储引 擎。 现在一般都是选用InnoDB了,主要是MyISAM的全表锁,读写串行问题,并发效率锁表,效率低, MyISAM对于读写密集型应用一般是不会去选用的。