引言
mysql是目前最流行的关系型数据库管理系统之一。在mysql中数据存储引擎是以插件的形式被引入的。它指定了表的类型,即如何存储和索引数据、是否支持事务等。存储引擎决定了数据表在计算机中的存储方式
mysql 中的数据存储引擎有很多种,常用到的有Innodb、Myisam、memory等
查看mysql支持的存储引擎
我们可以通过 show engines
命令查看支持的存储引擎。
通过show variables like 'hav%';
命令也可以实现上述操作,但是并不能直观的看到哪一种引擎是默认支持的存储引擎。
如果我们想直接查看默认支持的引擎也可以使用show variables like 'storage_engine%';
命令实现。
mysql> show variables like 'storage_engine%';
+----------------+--------+
| Variable_name | Value |
+----------------+--------+
| storage_engine | InnoDB |
+----------------+--------+
1 row in set (0.00 sec)
不过这个命令有点不大好记,所以一般情况下我都是使用show engines;
命令,其结果的support
字段值为default
的即是默认引擎。
更改默认支持的引擎
mysql5.5默认支持的存储引擎为 Innodb 我们也可以通过修改配置文件来实现让其默认支持其它的数据库。
windows下修改mysql.ini文件中的default-storage-engine=XXX
配置项。
linux下修改my.cnf文件中的default_storage_engine = XXX
配置项。
值得注意的是:
上面的xxx代指的是你想要的存储引擎
如果linux系统下你找不到my.cnf文件的位置 可以使用whereis my.cnf
命令进行查看
#whereis my.cnf
修改完毕后一定要记得重启mysql服务。
#service mysql restart
INNODB、MYISAM与MEMARY的区别及应用场景
1、MYISAM引擎的单表存储最大值是由计算机的文件系统限制的,而INNODB的单表最大值为64TB。以上所说的是包括外键,索引等在内的所有内容大小。
2、MYISAM占用和使用的空间(容量)低于INNODB。
3、MYISAM和MEMARY都支持表锁,而INNODB仅支持行锁。
4、MYISAM是三者当中唯一支持数据压缩和全文索引的存储引擎。
5、MYISAM不支持数据缓存,而INNODB和MEMARY支持。
6、INNODB是三者中唯一支持事务,集群索引和外键的存储引擎。
7、MEMOEY是三者中唯一支持哈希索引的引擎,而INNODB和MYISAM则是支持BTREE索引类型。
8、在高并发的状态下MYISAM处理数据的速度会有很大的,而INNODB则十定
总结:
因为MYISAM引擎不支持事务和外键,所以整体速都比较快,但是在数据并发量较大的情况下其写入速度会有很大的衰减,可靠性远不如INNODB。所以在对数据的完整性没有要求以及读取请求为主的应用比较适合使引擎。
INNODB引擎在事务的处理上和高并发处理上占有很大的优势,是比较可靠的存储引擎。但是其繁琐数据处理模式以及建立的大量外键、事务等也注定了它将比INNODB占据更大的磁盘空间。因此在需要进行频繁的写操作并且对事务的完整性比较高、需要实现并发控制的时候适合使用此引擎
MEMARY引擎使用内存来存储数据,它是三者中读写速度最快的引擎,同时也是三者中最不可靠的引擎。因为数据存储在内存中其安全性得不到保障,十分容易丢失。但是如果某个应用需要快速访问,并且数据量比较小,不妨考虑一下MEMARY引擎
注:因为其它引擎我不太了解索引只能谨慎的说是三者当