CSV引擎的表格其实是具有逗号分隔值的文本文件。CSV引擎中的表允许您以 CSV 格式导入或转储数据以便与读写相同格式的脚本和应用程序交换数据。
由于 CSV 表没有索引,因此您通常可以让InnoDB引擎在正常操作期间将数据保存在表中,并且仅在导入或导出阶段使用 CSV 引擎的表。
(五) 、Archive
这种存储引擎下表是紧凑的、没有索引的,主要用于于存储和检索大量很少引用的历史、存档或安全审计信息。
(六) 、Blackhole
Blackhole 存储引擎接收但不存储数据,与 Unix/dev/null设备类似。查询总是返回一个空集。这种引擎模式下的表可用于配置复制,其中 DML 语句被发送到副本服务器,但源服务器不保留自己的数据副本。
(七) 、NDB(也叫作NDBCLUSTER)
这种集群数据库引擎特别适用于要求正常运行时间高程度保障的和高可用性的应用程序。
(八) 、Merge
这种存储引擎可以让MySQL DBA 或开发人员能够对一系列相同的MyISAM表进行逻辑分组并将它们作为一个对象引用。适用于 VLDB 环境,例如数据仓库。
(九) 、Federated
这种存储引擎提供了链接单独的MySQL服务器以从许多物理服务器创建一个逻辑数据库的能力。非常适合分布式或数据集市环境。
(十) 、Example
这个引擎作为 MySQL 源代码中的一个例子,描述了如何开始编写新的存储引擎。它可能是开发人员感兴趣的。存储引擎是一个什么都不做的 “存根”。您可以指定表使用这种存储引擎,但不能在其中存储或从中检索数据。
(十一) 、小结
您不需要对整个服务器或架构限制使用相同的存储引擎。您可以为任何表指定特定的存储引擎。例如,一个应用程序中的表可能主要使用InnoDB类型,然后定义一个CSV引擎的表用于将数据导出到电子表格,而另外定义一些 MEMORY引擎类型的表用于临时工作区,简单来说,就是可以根据自己的需求灵活定义表的存储引擎。
四: 如何选择一个存储引擎,常用的存储引擎特点对比 |
==============================================================================================
通过上文我们Mysql有哪些存储引擎,下面就来讲解一下常用的存储引擎的特点:
选择一个表的存储引擎时,大家可以参考上面各个存储引擎特点然后根据自己的具体业务场景去选择,一般的业务场景使用MySQL官方默认的即可,下面我主要总结一些一些需要注意的细节(主要用于面试)。
1、各个引擎的Replication support是在服务器程序中实现,而不是在存储引擎中。
2、各个引擎的Encrypted data(数据加密)是在服务器中实现。
3、在 MySQL 5.7 及更高版本中,支持静态数据加密,都是在服务器中实现的。
4、MySQL Cluster NDB 7.3 及更高版本支持外键。
5、MySQL 5.6 及更高版本支持 FULLTEXT 索引。
6、MySQL 5.7 及更高版本支持地理空间索引。
7、InnoDB存储引擎在内部利用哈希索引来实现其自适应哈希索引功能。
五: 关于存储引擎常见的面试题 |
====================================================================================
(一) InnoDB的特点:
1、支持事务处理、ACID事务特性,是MySQL也是MySQL默认的存储引擎(MySQL5.5以前默认存储引擎是MyISAM);;
2、实现了SQL标准的四种隔离级别;
3、支持行级锁和外键约束;
4、可以利用事务日志进行数据恢复。
5、锁级别为行锁,行锁优点是适用于高并发的频繁表修改,高并发是性能优于 MyISAM。缺点是系统消耗较大。
6、索引不仅缓存自身,也缓存数据,相比 MyISAM 需要更大的内存。
(二) MyISAM的特点:
1、锁级别为表锁,表锁优点是开销小,加锁快;缺点是锁粒度大,发生锁冲动概率较高,容纳并发能力低,这个引擎适合查询为主的业务。
2、此引擎不支持事务,也不支持外键。
3、INSERT和UPDATE操作需要锁定整个表;
3、它存储表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描。
(三) 适用场景
MyISAM适合: (1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。
InnoDB适合: (1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。
具体需要根据系统的业务要求选择,一般情况下使用官方默认的即可。
InnoDB: 如果对数据的完整性要求比较高,且除了插入和查询外,还存在着许多更新和删除操作的,需要使用到事务或者外键的,适用于选择InnoDB,InnoDB也是Mysql现在默认的存储引擎。
MyISAM: 以只读或者插入操作为主,很少的更新和删除操作的,并且对数据完整性要求不高的可以选择。
===========================================================================
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
读者福利
分享一份自己整理好的Java面试手册,还有一些面试题pdf
不要停下自己学习的脚步
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
D-1712175941697)]
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算