MySQL之存储引擎,详细总结

news2024/11/24 1:15:40

在介绍存储引擎之前我们先了解了解MySQL的体系结构:

  • 连接层

    最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限

  • 服务层

    第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行,所有跨存储引擎的功能也在这一层实现,如过程、函数

  • 引擎层

    存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信,不同的存储引擎具有不同的功能,可根据所需选取合适的存储引擎

  • 存储层

    主要是将数据存储在文件系统之上,并完成存储引擎的交互

存储引擎的一些常用命令

  1. 查看MySQL提供的所有存储引擎:
    mysql> show engines;

    从上图我们可以查看出 MySQL 当前默认的存储引擎是InnoDB,并且在5.7版本所有的存储引擎中只有 InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务。

  2. 查看MySQL当前默认的存储引擎
    mysql> show variables like '%storage_engine%';

  3. 查看表的存储引擎
    show table status like "table_name";

存储引擎简介

        存储引擎就是存储数据、建立索引、更新/查询数据等技术实现方式,存储引擎是基于表的,而不是基于库的所以存储引擎,也可以被称为表类型

InnoDB存储引擎

  • 介绍:InnoDB是一种兼顾高可靠性高和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL存储引擎

  • 特点

    DML(增删改)操作遵循ACID(事务四大特性)模型,支持事务;

    行级锁,提高并发访问性能

    支持外链FORELGN KEY约束,保证数据的完整性和正确性

  • 文件

    xxx.ibd:xxx代表的是表明,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构、数据和索引

MyISAM存储引擎

  • 介绍:MyISAM是MySQL早期的默认存储引擎

  • 特点

    • 不支持事务,不支持外键

    • 支持表锁,不支持行锁

    • 访问速度快

  • 文件

    • xxx.sdi:存储表结构信息

    • xxx.MYD:存储数据

    • xxx.MYI:存储索引

Memory

  • 介绍:Memory引擎的表数据时存储在内存中,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。

  • 特点

    • 内存存放

    • hash索引

  • 文件

    • xxx.sdi:存储表结构信息(其它信息在内存中)

MyISAM和InnoDB区别

        MyISAM是MySQL的默认数据库引擎(5.5版之前)。虽然性能极佳,而且提供了大量的特性,包括全文索引、压缩、空间函数等,但MyISAM不支持事务和行级锁,而且最大的缺陷就是崩溃后无法安全恢复。不过,5.5版本之后,MySQL引入了InnoDB(事务性数据库引擎),MySQL 5.5版本后默认的存储引擎为InnoDB。

        大多数时候我们使用的都是 InnoDB 存储引擎,但是在某些情况下使用 MyISAM 也是合适的比如读密集的情况下。(如果你不介意 MyISAM 崩溃恢复问题的话)。

两者的对比:

  1. 是否支持行级锁 : MyISAM 只有表级锁(table-level locking),而InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。

  2. 是否支持事务和崩溃后的安全恢复: MyISAM 强调的是性能,每次查询具有原子性,其执行速度比InnoDB类型更快,但是不提供事务支持。但是InnoDB 提供事务支持,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。

  3. 是否支持外键: MyISAM不支持,而InnoDB支持。

  4. 是否支持MVCC :仅 InnoDB 支持。应对高并发事务, MVCC比单纯的加锁更高效;MVCC只在 READ COMMITTEDREPEATABLE READ 两个隔离级别下工作;MVCC可以使用 乐观(optimistic)锁 和 悲观(pessimistic)锁来实现;各数据库中MVCC实现并不统一。

  5. 索引:

    1. MyISAM: B+Tree 叶节点的data域存放的是数据记录的地址。在索引检索的时候,首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其 data 域的值,然后以 data 域的值为地址读取相应的数据记录。这被称为“非聚簇索引”。

    2. InnoDB: 其数据文件本身就是索引文件。相比MyISAM,索引文件和数据文件是分离的,其表数据文件本身就是按B+Tree组织的一个索引结构,树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。这被称“聚簇索引(或聚集索引)”。而其余的索引都作为辅助索引,辅助索引的data域存储相应记录主键的值而不是地址,这也是和MyISAM不同的地方。在根据主索引搜索时,直接找到key所在的节点即可取出数据;在根据辅助索引查找时,则需要先取出主键的值,再走一遍主索引。 因此,在设计表的时候,不建议使用过长的字段作为主键,也不建议使用非单调的字段作为主键,这样会造成主索引频繁分裂。

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

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

相关文章

海康Ehome2.0与5.0设备接入EasyCVR视频汇聚平台时的配置区别

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Vue项目之子组件

子组件 项HelloWorld这样的组件,在其他组件中展示的组件,被称为子组件,展示子组件的组件被称为父组件。 例:Home组件是HelloWorld组件的父组件,App组件爱你是router-link/router-views组件的父组件。 子组件的使用方式…

重构智能防丢产品,苹果Find My技术引领市场发展

目前市场上最主要的防丢技术是蓝牙防丢和GPS防丢,蓝牙防丢是通过感应防丢器与绑定手机的距离来实现防丢的。一般防丢会默认设置一个最远安全距离,超过这个安全距离后,与手机蓝牙信号断开,触发防丢报警,用户根据防丢报警…

vscode通过ssh连接服务器(吐血总结)

一、通过ssh连接服务器 1、打开vscode,进入拓展(CtrlShiftX),下载拓展Remote - SSH。 2、点击远程资源管理器选项卡,选择远程(隧道/SSH)类别。 3、点击SSH配置。 4、在中间上部分弹出的配置文件…

物联网实战--入门篇之(七)嵌入式-MQTT

目录 一、MQTT简介 二、MQTT使用方法 三、MQTT驱动设计 四、代码解析 五、使用过程 六、总结 一、MQTT简介 MQTT因为其轻量、高效和稳定的特点,特别适合作为物联网系统的数据传输协议,已经成为物联网事实上的通信标准了。关于协议的具体内容看看这…

python+vue访客预约登记系统-数据可视化echart大屏

为了系统的完整,必须要有可行性分析的,系统的可行性关系到生存问题,分析其意义可否利用本系统来弥补线下管理模式中的不足之处等,通过本系统来减少工作量,使管理者与用户的工作和管理效率更高。对此体现出更多的意义和…

力扣刷题Days30-238. 除自身以外数组的乘积(js)

目录 1,题目 2,代码 2.1左右乘积列表 2.2优化-空间复杂度常量化 算法实现: 3,学习与总结 3.1记录我的思考过程 3.2本题特点 1,题目 给你一个整数数组 nums,返回 数组 answer ,其中 answ…

用Servlet实现一个简单的表白墙

1. 准备工作 创建项目,引入依赖...... 将静态页面放到项目中(放在webapp目录下): 当前,这个表白墙页面,已经可以输入内容,点击提交之后也能显示内容,后续后端要做的工作即: ①存档 用户点提交的时候,把刚才输入的内容通过网络传输给服务器,由服务器保存这个数据. ②读档 …

什么是EDM邮件推广营销?

电子邮件作为最古老的互联网沟通工具之一,凭借其无可比拟的直达性、个性化潜力与高投资回报率,始终占据着企业营销策略的核心地位。随着人工智能技术的革新应用,云衔科技以其前瞻视野与深厚技术底蕴,倾力打造了一站式智能EDM邮件营…

标定系列——预备知识-OpenCV中相机标定相关函数(十一)

标定系列——预备知识-OpenCV中相机标定相关函数(十一) 说明记录 说明 对相机标定过程中使用的函数进行记录 记录

Dual Relation Knowledge Distillation for Object Detection用于目标检测的双关系知识蒸馏

摘要 有两个关键点导致检测任务的蒸馏性能不佳。一是前景和背景特征严重不平衡,二是小对象缺乏足够的特征表示。为了解决上述问题,我们提出了一种新的知识蒸馏方法——双关系知识蒸馏(DRKD),包括逐像素关系蒸馏和逐实…

鸿蒙Lottie动画-实现控制动画的播放、暂停、倍速播放、播放顺序

介绍 本示例展示了lottie对动画的操作功能。引入Lottie模块,实现控制动画的播放、暂停、倍速播放、播放顺序、播放到指定帧停止或从指定帧开始播放、侦听事件等功能,动画资源路径必须是json格式。 效果预览 使用说明: 进入页面默认开始201…

【Python刷题】将有序数组转换为二叉搜索树

问题描述 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 高度平衡的意思是:二叉树是一颗满足“每个结点的左右两个子树的高度差的绝对值不超过1”的二叉树。 示例 1: 输入&#xf…

MVC与三层架构理解

1. JSP的发展 早期只有Servlet,只能使用response输出标签数据,非常麻烦后来。JSP的出现,简化了 Servlet的开发。但是过度的使用JSP,在JSP中写大量的java代码,又前端的页面,造成难以维护,难于分…

pytorch-tpu/llama推理优化之input prompt bucketing

数据更新: python脚本(注意分支): HLO图分析KV-Cache更新: KV-Cache作为HLO图的输入输出:bf16[1,2048,32,128]{3,2,1,0} 128x, 2x32x2 参考链接 notes for transformer introduction by an Italian t…

HUAWEI 华为交换机 配置 Eth-Trunk 接口流量本地优先转发示例(堆叠)

组网需求 说明 S5720I-10X-PWH-SI-AC 和 S5720I-6X-PWH-SI-AC 不支持此配置。 如 图 3-23 所示,为了增加设备的容量采用设备堆叠技术,将 Switch3 和 Switch4通过专用的堆叠电缆链接起来,对外呈现为一台逻辑交换机。为了实现设备间的备份、…

四、MySQL数据库基础(约束详解!)

一、约束 (一)约束概述 1.概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 2.目的:保证数据库中数据的正确、有效性和完整性。 3。分类: 注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添…

OpenHarmony实战开发-如何使用rating组件实现星级打分功能。

介绍 本篇Codelab将引导开发者使用rating组件实现星级打分功能。 相关概念 rating组件:评分条,可根据用户判断进行打分。 环境搭建 软件要求 DevEco Studio版本:DevEco Studio 3.1 Release及以上版本。OpenHarmony SDK版本:A…

vuepress-theme-hope 添加谷歌统计代码

最近做了个网站,从 cloudflare 来看访问量,过去 30 天访问量竟然有 1.32k 给我整懵逼了,我寻思不应该呀,毕竟这个网站内容还在慢慢补充中,也没告诉别人,怎么就这么多访问?搜索了下, cloudflare 还会把爬虫的请求也就算进来,所以数据相对来说就不是很准确 想到了把 Google An…

css酷炫边框

边框一 .leftClass {background: #000;/* -webkit-animation: twinkling 1s infinite ease-in-out; 1秒钟的开始结束都慢的无限次动画 */ } .leftClass::before {content: "";width: 104%;height: 102%;border-radius: 8px;background-image: linear-gradient(var(…