【MySQL精通之路】存储引擎-MySQL8.0中的差异

存储引擎是MySQL组件,用于处理不同表类型的SQL操作。

InnoDB是默认的、最通用的存储引擎,Oracle默认使用其创建表。(MySQL 8.0中的CREATE TABLE语句默认创建InnoDB表。)

MySQL Server使用可插拔存储引擎体系结构,使存储引擎能够加载到正在运行的MySQL服务器中或从中卸载。

要确定服务器支持哪些存储引擎,请使用SHOW engines语句。

Support列中的值指示是否可以使用引擎。值YES、NO或DEFAULT表示某个引擎可用、不可用或可用,并且当前设置为默认存储引擎。

mysql> SHOW ENGINES\G
*************************** 1. row ***************************Engine: PERFORMANCE_SCHEMASupport: YESComment: Performance Schema
Transactions: NOXA: NOSavepoints: NO
*************************** 2. row ***************************Engine: InnoDBSupport: DEFAULTComment: Supports transactions, row-level locking, and foreign keys
Transactions: YESXA: YESSavepoints: YES
*************************** 3. row ***************************Engine: MRG_MYISAMSupport: YESComment: Collection of identical MyISAM tables
Transactions: NOXA: NOSavepoints: NO
*************************** 4. row ***************************Engine: BLACKHOLESupport: YESComment: /dev/null storage engine (anything you write to it disappears)
Transactions: NOXA: NOSavepoints: NO
*************************** 5. row ***************************Engine: MyISAMSupport: YESComment: MyISAM storage engine
Transactions: NOXA: NOSavepoints: NO
...

本章介绍专用MySQL存储引擎的用例。

它不包括“InnoDB存储引擎”和“MySQL NDB Cluster 8.0”中涵盖的默认InnoDB存储引擎或NDB存储存储引擎。

对于高级用户,它还包含可插拔存储引擎架构的描述

(请参阅“MySQL存储引擎架构概述”)。

有关商业MySQL Server二进制文件中提供的功能的信息,请参阅MySQL网站上的MySQL 版本。可用的存储引擎可能取决于您使用的MySQL版本。

有关MySQL存储引擎常见问题的答案,请参阅“MySQL 8.0常见问题解答:存储引擎”。

1.MySQL 8.0支持的存储引擎

1.1 InnoDB

        MySQL 8.0中的默认存储引擎。InnoDB是MySQL的事务安全(ACID兼容)存储引擎,具有提交、回滚和崩溃恢复功能,可保护用户数据。InnoDB行级锁定(不升级到更粗粒度的锁定)和Oracle风格的一致非锁定读取提高了多用户并发性和性能。InnoDB将用户数据存储在集群索引中,以减少基于主键的常见查询的I/O。为了保持数据完整性,InnoDB还支持FOREIGN KEY引用完整性约束。

有关InnoDB的更多信息,请参阅"InnoDB存储引擎"。

1.2 MyISAM

        这些表占用空间很小。表级锁定限制了读/写工作负载的性能,因此它通常用于Web和数据仓库配置中的只读或只读工作负载。

1.3 Memory

        将所有数据存储在RAM中,以便在需要快速查找非关键数据的环境中快速访问。这种发动机以前被称为HEAP发动机。其使用案例正在减少;InnoDB及其缓冲池内存区域提供了一种通用且持久的方式来将大部分或所有数据保存在内存中,NDBCLUSTER为巨大的分布式数据集提供了快速的键值查找。

1.4 CSV

        它的表实际上是具有逗号分隔值的文本文件。CSV表允许您以CSV格式导入或转储数据,以便与读取和写入相同格式的脚本和应用程序交换数据。因为CSV表没有索引,所以通常在正常操作期间将数据保存在InnoDB表中,并且仅在导入或导出阶段使用CSV表。

1.5 Archive

        这些紧凑、无索引的表用于存储和检索大量很少被引用的历史、归档或安全审计信息。

1.6 Blackhole

        黑洞存储引擎接受但不存储数据,类似于Unix/dev/null设备。查询总是返回一个空集。这些表可以用于复制配置,其中DML语句被发送到副本服务器,但源服务器不保留自己的数据副本。

1.7 NDB

        (也称为NDBCLUSTER)这种集群数据库引擎特别适合于需要尽可能高的正常运行时间和可用性的应用程序。

1.8 Merge

        使MySQL DBA或开发人员能够对一系列相同的MyISAM表进行逻辑分组,并将它们作为一个对象引用。适用于VLDB环境,如数据仓库。

1.9 Federated

        提供链接独立MySQL服务器的能力,以从多个物理服务器创建一个逻辑数据库。非常适合分布式或数据集市环境。

1.10 Example

        此引擎是MySQL源代码中的一个示例,说明了如何开始编写新的存储引擎。它主要是开发者感兴趣的。存储引擎是一个什么都不做的“存根”。您可以使用此引擎创建表,但不能将任何数据存储在表中或从表中检索数据。

2.选择存储引擎

        MySQL提供的各种存储引擎在设计时考虑到了不同的用例。下表概述了MySQL提供的一些存储引擎,并在下表中进行了说明。

FeatureMyISAMMemoryInnoDBArchiveNDB
B-tree索引YesYesYesNoNo
备份/时间点恢复(note 1)YesYesYesYesYes
集群支持NoNoNoNoYes
聚集索引NoNoYesNoNo
压缩数据Yes (note 2)NoYesYesNo
数据缓存NoN/AYesNoYes
加密数据Yes (note 3)Yes (note 3)Yes (note 4)Yes (note 3)Yes (note 5)
外键支持NoNoYesNoYes
全文搜索索引YesNoYes (note 6)NoNo
地理空间数据类型支持YesNoYesYesYes
地理空间索引支持YesNoYes (note 7)NoNo
哈希索引NoYesNo (note 8)NoYes
索引缓存YesN/AYesNoYes
锁定粒度TableTableRowRowRow
MVCCNoNoYesNoNo
复制支持(note 1)YesLimited (note 9)YesYesYes
存储限制256TBRAM64TBNone384EB
T树索引NoNoNoNoYes
事务NoNoYesNoYes
更新数据字典的统计信息YesYesYesYesYes

note:

1.在服务器中实现,而不是在存储引擎中实现。

2.只有在使用压缩行格式时,才支持压缩的MyISAM表。使用MyISAM压缩行格式的表是只读的

3.通过加密功能在服务器中实现。

4.通过加密功能在服务器中实现;在MySQL 5.7及更高版本中,支持静态数据加密

5.通过加密功能在服务器中实现;截至NDB 8.0.22支持加密NDB备份;NDB 8.0.29及更高版本支持透明NDB文件系统加密。

6.MySQL 5.6及更高版本提供了对FULLTEXT索引的支持。

7.MySQL 5.7及更高版本提供了对地理空间索引的支持。

8.InnoDB的自适应哈希索引功能在内部使用哈希索引

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux命令日常使用思考

linux命令日常使用思考 复制的相关问题scp和cp的区别root192.168.5.229-r的理解 更新版本的相关问题svn info 根目录和家目录的区别根目录家目录 复制的相关问题 scp和cp的区别 安全性:SCP 是基于 SSH 的加密传输协议,可以保证数据在传输过程中的安全性…

vue期末复习选择题1

1. 下面哪一项描述是错误的?(B) A.$("ul li:gt(5):not(:last)")选取ul标记里面索引值大于5且不是最后一个的li元素B.$("div").find("span")选取div元素的子元素spanC.$("div.showmore > a")选取…

Axure RP 9 for Mac/win:重新定义交互原型设计的未来

在当今数字化时代,交互原型设计已成为产品开发中不可或缺的一环。Axure RP 9作为一款功能强大的交互原型设计软件,凭借其出色的性能和用户友好的界面,赢得了广大设计师的青睐。 Axure RP 9不仅支持Mac和Windows两大主流操作系统,…

Excel实现将A列和B列的内容组合到一个新的列(例如C列)中,其中A列的每个值都与B列的所有值组合。

利用Excel中vba代码宏实现 原始数据: 自动生成后数据: vba实现代码: Sub CombineColumns()Dim ws As WorksheetDim lastRowA As Long, lastRowB As Long, i As Long, j As LongDim MyIndex As IntegerDim strCombine As String, strColA As…

主流容器工具对比以及重点推荐学习的企业级工具

常见的主流容器工具包括但不限于以下几种: 1. Docker: Docker 是最流行的容器平台之一,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中,然后可以在任何支持Docker的系统上运行。 2. Kubernetes:Kubern…

【Python】 去除字符串中的所有空白字符

基本原理 在Python中,字符串(String)是不可变的数据类型,这意味着一旦创建了一个字符串,就不能修改它的内容。然而,我们可以创建一个新的字符串,它包含原始字符串中的字符,但不包含…

局域网传文件怎么操作?轻松实现文件共享!

在现代的办公和生活中,局域网传文件已经成为一种非常常见和方便的方式,可以快速、安全地在局域网内进行文件传输。无需依赖互联网,局域网传文件可以帮助团队成员之间共享文件、备份数据、进行协作等。本文将介绍三种常见的方法,帮…

MySQL——存储过程,触发器

BaiduComate: # 问题1: # 问题1: 帮我创建两个表student与score表,要求student表有id,createDate,userName,phone,age,sex,introduce, 要求score表有id&…

Vue3实战Easy云盘(四):使用空间+文件预览+文件分享+文件下载

一、空间使用 Framework.vue中 (1)引入接口 const api {getUseSpace: "/getUseSpace",logout: "/logout", }; (2)回调 // 使用空间 const useSpaceInfo ref({ useSpace: 0, totalSpace: 1 }); const g…

达梦数据库和Oracle对比

达梦数据库和Oracle对比 达梦数据库(DM)是中国自主研发的一款数据库管理系统,在功能和应用上与 Oracle 数据库有诸多类似,但也有其独特的特点。以下是对达梦数据库(DM)和 Oracle 数据库的详细对比&#xf…

unreal engine 5.0.3 创建游戏项目

根据虚幻官网介绍,虚幻引擎5可免费用于创建线性内容、定制项目和内部项目。你可以免费用它开发游戏,只有当你的产品营收超过100万美元时,才收取5%的分成费用。所以目前国内也有许多游戏厂商在使用UE制作游戏。UE5源码也已开源,有U…

[数据集][目标检测]吸烟检测数据集VOC+YOLO格式1449张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1449 标注数量(xml文件个数):1449 标注数量(txt文件个数):1449 标注…

huggingface笔记:LLama 2

1 前提tip 1.1 使用什么数据类型训练模型? Llama2模型是使用bfloat16训练的 上传到Hub的检查点使用torch_dtype float16,这将通过AutoModel API将检查点从torch.float32转换为torch.float16。在线权重的数据类型通常无关紧要,这是因为模型…

QT 使用QZipWriter进行文件压缩

目录 1、QZipWriter 2、主要功能 3、示例 1、QZipWriter QZipWriter 是 Qt 提供的一个类,用于创建和管理 ZIP 文件。它属于 Qt 的 QtGui 模块,虽然在 Qt 6 中已经被移除,但在早期的 Qt 版本中,它被用作一种简便的方式来创建 ZI…

CMMI模型的分析

CMMI模型的分析 CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是由美国卡内基梅隆大学软件工程研究所(SEI)开发的一个过程级改进训练和评估程序。CMMI模型为组织提供了一套综合的指南,用于改进其过程和提升性能。 CMMI 3.0是CMMI模型的最新版本,于…

AWS计算之AWS Elastic Beanstalk

AWS Elastic Beanstalk是一项用于简化应用程序部署和管理的托管服务。它允许开发人员上传他们的应用程序代码,并自动处理底层的部署、扩展、负载均衡和监控任务,从而使开发人员能够专注于应用程序的开发而不必担心基础架构的管理细节。 借助Elastic Bea…

机器学习300问】95、什么是KNN算法?它和K-means什么关系?

一、KNN算法的定义 KNN(K-Nearest Neighbors)算法,是一种简单而有效的监督学习方法。它既可以用在分类任务,也可用在回归任务中。KNN算法的核心思想:在特征空间中,如果有一个数据点周围的大多数邻居属于某个…

5. JVM面试题汇总

Java全栈面试题汇总目录-CSDN博客 1. 说一下JVM的主要组成部分及其作用? JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。 Cl…

linux mail命令及其历史

一、【问题描述】 最近隔壁组有人把crontab删了,crontab这个命令有点反人类,它的参数特别容易误操作: crontab - 是删除计划表 crontab -e 是编辑,总之就是特别容易输入错误。 好在可以通过mail命令找回,但是mai…

【计算机网络】初识Tcp协议

💻文章目录 📄前言Tcp基础概念Tcp 的报文格式三次握手四次挥手 Tcp的滑动窗口机制概念超时重传机制高速重传 TCP传输控制机制流量控制拥堵控制慢启动 Tcp的性能优化机制延迟应答捎带应答 📓总结 📄前言 TCP三次握手、四次挥手&…