数据库Mysql】——存储引擎

网友投稿 755 2022-10-25

【数据库Mysql】——存储引擎

【数据库Mysql】——存储引擎

现在小编的工作中会经常用到MySQL,所以最近在学习一些MySQL的使用,其中提到了存储引擎的概念。本文也是主要讲解存储引擎的概念,内容,分类以及该如何选择合适的存储引擎。

存储引擎的概念是MySQL的特点,而且是一种插入式的存储引擎概念,存储引擎就是指表的类型,数据库的存储引擎决定了表在计算机中存储方式,用户可以根据自己的不同要求,选择不同的存储方式、是否进行事务处理。

查看MySQL存储引擎

查看MySQL数据库支持的存储引擎类型。方法如下

show engines;

在查询结果中,Engine参数指存储引擎名称;Support参数说明MySQL是否支持该类引擎;Comment参数指对该引擎的评论;Transactions参数是否支持事物处理;XA是否分布式交易处理的XA规范;Savepoints参数是否支持保存点,以便事务回滚到保存点。

还有一种查询MySQL支持的存储引擎

show variables like 'have%';

查询结果中:Variable_name表示存储引擎的名称,value表示MySQL支持情况。YES表示支持,No表示不支持,DISABLED表示支持但是还有没有开启。

查看MySQL版本默认存储引擎

show variables like 'storage_engines';

如何修改默认存储引擎

修改默认的存储引擎,可以在my.ini中进行修改,将default-storage-engine=InnoDB修改为需要的存储引擎,例如修改为MyISAM,default-storage-engine=MyISAM,然后重启服务,修改生效,注意在Windows平台下面没有直接重启MySQL的命令语句,只能采用先停止net stop mysql,在启动的命令net startmysql。

讲解InnoDB,MyISAM,MEMORY三种存储引擎

1、InnoDB存储引擎

InnoDB给MySQL的表提供了事务,回滚,崩溃修复能力和多版本并发控制的事务安全。InnoDB存储引擎支持自动增长列(AUTO_INCREMENT),且在MySQL中规定自动增长列必须为主键;支持外键(FOREING KEY),外键所在表为子表,外键所依赖的表为父表;创建表的表结构存储在.frm文件中。数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。

InnoDB的优势在于提供良好的事务管理,崩溃修复能力和并发控制,缺点在器读写效率稍差,占用数据空间相对比较大。

2、MyISAM存储索引

MyISAM存储索引的表存储成3个文件,文件的名字和表名相同,扩展名包括frm、MYD、MYI。其中,frm为扩展名的文件存储表结构,MYD为存储数据,MYI扩展名的文件存储索引。其支持三种不同的存储格式,静态型,动态型,和压缩型。

MyISAM优势在于占用空间小,处理速度快,缺点是不支持事务的完整性和并发性。

3、MEMORY存储引擎

MEMORY存储引擎是MYSQL中一类特殊的存储引擎,存储在内存中的内容来创建表,而且这些数据都放到内存中。所以其对数据的快速处理,提高整个表的处理效率,但是服务器需要有足够的内存来维持MEMORY,其存储引擎默认为哈希索引,速度非常的快。但是MEMORY表的大小受到限制。一个是max_rows和max_heap_table_size。

MEMORY存储引擎,这类表的处理速度非常快,但是数据易丢失,生命周期短。

三种引擎对比

根据上表三种引擎对比,个人认为在选择引擎的时候根据数据的操作来选择。

InnoDB:对事务的完整性要求比较高,要求实现并发控制,或者需要进行频繁的更新,删除操作的表,因为该类引擎实现事务的提交和回滚。

MyISAM存储引擎:主要用于插入新记录和读出记录,可以提高效率,而且空间和内容使用比较低。

MEMORY:需要很快的读写速度,对数据的安全性要求性低,但是对表的大小有要求,不能建立太大的表。

总结

上面仅仅是对三种引擎进行了分析和对比,而且这些对比并不是绝对的,在实际应用中还需要根据实际情况进行分析。关于存储引擎还有很多种,但是小编也是出于初学者的阶段,涉猎不是很多,以后待小编学习之后定会进行分享。

题外话

在这小编也同样推荐一篇博客:​​MySQL数据库性能优化之存储引擎选择(MyISAM、InnoDB、NDBCluster)​​因为小编对其中的NDBCluster并不很熟悉所以就不进行单独讲解了。待小编研究后再来分享。

如有理解偏颇之处,请各位大神不惜赐教,不胜感激!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:开源项目ERM模型转jpa实体maven插件使用
下一篇:XCrawler - 轻量级、易维护的PHP爬虫框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~