关于数据库优化,除了掌握SQL语句优化之外,数据库引擎还是有必要了解一下的
什么是数据库引擎:
数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。 使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库。
常用的几种数据库引擎:
(一) MyISAM存储引擎
- MyIASM是MySQL默认的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键
- 当INSERT(插入)或UPDATE(更新)数据时即写操作需要锁定整个表,效率便会低一些
- MyIASM中存储了表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描
- 如果表的读操作远远多于写操作且不需要数据库事务的支持,那么MyIASM也是很好的选择
- MyIASM支持全文类型索引
全文索引(full-text index):主要是为了解决在我们需要用like查询的低效问题
(二) Innodb存储引擎
- 支持事务安装
- 数据多版本读取
- 行级锁、实现外键约束
- 没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表
- MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引
- InnoDB不支持全文索引
(三) Memory存储引擎
Memory存储引擎,通过名字就很容易让人知道,他是一个将数据存储在内存中的存储引擎。Memory存储引擎不会将任何数据存放到磁盘上,仅仅存放了一个表结构相关信息的.frm文件在磁盘上面。所以一旦MySQLCrash或者主机Crash之后,Memory的表就只剩下一个结构了。Memory表支持索引,并且同时支持Hash和B-Tree两种格式的索引。由于是存放在内存中,所以Memory都是按照定长的空间来存储数据的,而且不支持BLOB和TEXT类型的字段。Memory存储引擎实现页级锁定。