MySQL存储引擎
存储引擎实际上就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据。存储引擎也可以称为表类型。
(1)查看MySQL支持的存储引擎
查看当前MySQL数据库支持的存储引擎有两种方式:
① show engines;
②show variables like ‘have%’;
语法格式:
SHOW ENGINES;
说明:上述语句可以使用分号“;”结束,也可以使用“\g”或者“\G”结束,其中,“\g”的作用于分号作用相同,而”\G”可以让结果更加美观。
(2)存储引擎简介
①InnoDB存储引擎是事务(Transaction)安全的,并且支持外键(foreign key)。需要执行大量的增、删、改操作(即insert、delete、update语句),出于事务安全方面的考虑,InnoDB存储引擎是更好的选择。
从MySQL 5.6版本开始,InnoDB存储引擎的表已经支持全文索引。
对于InnoDB存储引擎的数据库表而言,存在表空间的概念,InnoDB表空间分为共享表空间与独享表空间。
②如果某个表主要提供OLAP支持,建议选用MyISAM存储引擎。MyISAM具有检查和修复表的大多数工具。
MyISAM表可以被压缩,而且最早支持全文索引,但MyISAM表不是事务安全的,也不支持外键(foreign key)。
如果某张表需要执行大量的select语句,出于性能方面的考虑,MyISAM存储引擎是更好的选择。
③Memory存储引擎(之前称为HEAP存储引擎)将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。
它非常适合用于存储临时数据的临时表,以及数据仓库中的纬度表。它默认使用哈希(HASH)索引,而不是我们熟悉的B+树索引。
优势:速度非常快
缺点:只支持表锁,并发性能较差,并且不支持TEXT和BLOB列类型,会浪费内存。
(3)存储引擎的选择
①MyISAM存储引擎
适用场景是不需要事务支持、并发相对较低、数据修改相对较少、以读为主、数据一致性要求不是非常高。注意事项:尽量索引和顺序操作。
②InnoDB存储引擎
适用场景是需要事务支持、行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成、数据更新较为频繁。注意事项;主键尽可能小
③MEMORY存储引擎
适用场景是需要很快的读写速度、对数据的安全性要求较低。
注意事项:不能是太大的表。