简要的谈谈MySQL存储引擎

MySQL存储引擎

  • 一、先从总体架构说起
  • 二、引擎介绍
    • 1.存储引擎
    • 2.如何更改数据库表引擎
    • 3.常用引擎及其特性对比
    • 4.如何选择不同类型的引擎

一、先从总体架构说起

1.MySQL架构就是一个客户端-服务器系统。架构可以分为Server层 和 Engine层两部分

在这里插入图片描述

  • 连接器:连接器负责跟客户端建立连接、获取权限、维持和管理连接
  • 分析器
    • 词法分析:将一个完整的SQL语句,拆分成语句类型(select? insert? update? …)、表名、列名等等
    • 语法分析:根据语法规则,判断输入的这个 SQL 语句是否满足 MySQL 语法
  • 优化器:按照 MySQL 认为最优的方案去执行
  • 执行器:执行语句,然后从存储引擎返回数据
  • Engine层:就是存储引擎层

二、引擎介绍

1.存储引擎

1.MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应引擎,或 者编写存储引擎

2.通过指定 show engines , 来查询当前数据库支持的存储引擎 :
在这里插入图片描述

字段表含义:

  • support : 指服务器是否支持该存储引擎
  • transactions : 指存储引擎是否支持事务
  • XA : 指存储引擎是否支持分布式事务处理
  • Savepoints : 指存储引擎是否支持保存点(实现回滚到指定保存点)

3.查看MySQL数据库存储引擎配置

SHOW VARIABLES LIKE '%storage_engine%';

在这里插入图片描述

2.如何更改数据库表引擎

1.建表语句后面加入引擎赋值即可 ,命令举例如下:

CREATE TABLE t1(id INT, name VARCHAR(20)) ENGINE = MyISAM;

2.修改已有的表引擎 , 命令举例如下

ALTER TABLE t1 ENGINE = InnoDB;

3.常用引擎及其特性对比

  1. MyISAM存储引擎 :访问快,不支持事务和外键。表结构保存在.frm文件中,表数据保存在.MYD文 件中,索引保存在.MYI文件中
    在这里插入图片描述
  2. innoDB存储引擎 :支持事务 , 占用磁盘空间大 ,支持并发控制。表结构保存 在.frm文件中,如果是共享表空间,数据和索引保存在 innodb_data_home_dir 和
    innodb_data_file_path定义的表空间中,可以是多个文件。如果是多表空间存储,每个表的数据和 索引单独保存在 .ibd 中
    在这里插入图片描述
  3. MEMORY存储引擎 : 内存存储 , 速度快 ,不安全 ,适合小量快速访问的数据。表结构保存在.frm中
    在这里插入图片描述
  4. 对比
特点InnoDBMyISAMMEMORYMERGENDB
存储限制64TB没有
事务安全支持
锁机制行锁(适合高并发)表锁表锁表锁行锁
B树索引支持支持支持支持支持
哈希索引支持
全文索引支持(5.6版本之后)支持
集群索引支持
数据索引支持支持支持
索引缓存支持支持支持支持支持
数据可压缩支持
空间使用N/A
内存使用中等
批量插入速度
支持外键支持

4.如何选择不同类型的引擎

1.选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据 实际情况选择多种存储引擎进行组合

2.以下是几种常用的存储引擎的使用环境

  • InnoDB : 是Mysql的默认存储引擎,用于事务处理应用程序,支持外键。如果应用对事务的完整性 有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包含更新、
    删除操作,那么InnoDB存储引擎是比较合适的选择。 InnoDB存储引擎除了有效的降低由于删除和 更新导致的锁定, 还可以确保事务的完整提交和回滚,对于类似于计费系统或者财务系统等对数据 准确性要求比较高的系统, InnoDB是最合适的选择
  • MyISAM : 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整 性、并发性要求不是很高,那么选择这个存储引擎是非常合适的
  • MEMORY:将所有数据保存在RAM中,在需要快速定位记录和其他类似数据环境下,可以提供极 快的访问。 MEMORY的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,其次是要确保 表的数据可以恢复,数据库异常终止后表中的数据是可以恢复的。 MEMORY表通常用于更新不太 频繁的小表,用以快速得到访问结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【AI大模型】这可能是最简单的本地大模型工具,无须部署,一键使用

目录 前言 LM-Studio​编辑 那么问题来了,为什么我要在本地部署大模型? 隐私性: 定制性: 成本和体验的优化: 工具功能特点和使用方式介绍: 首页提供搜索功能和一些模型的推荐 模型下载管理&#x…

深入理解内联函数(C语言)

目录 1.什么是内联函数2.内联函数与宏3.编译器对内联函数的处理4.参考文献 1.什么是内联函数 很多人都会知道,可以将比较小的函数写成内联函数的形式,这样会节省函数调用的开销,具体是什么样的开销呢? 一个函数在执行过程中&…

Stable Diffusion——U-ViT用于扩散建模的 ViT 主干网

1.概述 扩散模型是最近出现的强大的深度生成模型,可用于生成高质量图像。扩散模型发展迅速,可应用于文本到图像生成、图像到图像生成、视频生成、语音合成和 3D 合成。 除了算法的改进,骨干网的改进在扩散建模中也发挥着重要作用。一个典型…

Android 实现竖排文本(垂直方向显示)

Android 实现竖排文本-垂直方向显示 前言效果图代码实现方式一 Custom View1. 自定义视图 VerticalTextView2. 在xml布局文件中使用3. 设置文本内容 方式二 使用 TextView 的 rotation属性方式三 使用带有跨距文本的TextView1. 自定义视图 VerticalTextView2. 在xml布局文件中使…

Dubbo源码及总结

Springboot整合Dubbo启动解析Bean定义 根据springboot启动原理,会先把启动类下的所有类先进行解析bean定义,所以要先EnableDubbo这个注解,再根据这个注解里面的注解,可以知道import的两个类DubboComponentScanRegistrar和DubboCo…

【408精华知识】主存相关解题套路大揭秘!

讲完了Cache,再来讲讲主存是怎么考察的,我始终认为,一图胜千言,所以对于很多部件,我都是通过画图进行形象的记忆,那么接下来我们对主存也画个图,然后再来详细解读其考察套路~ 文章目录 零、主存…

结构体;结构成员访问操作符

结构体: 虽然c语言已经提供了内置类型,比如:char、short、int、long等,但还是不够用,就好比我描述一个人,我需要描述他的身高,体重,年龄,名字等信息&#xff0c…

类与对象:接口

一.概念 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。 二.语法规则 与定义类相似,使用interface关键词。 Idea可以在开始时直接创建…

《计算机网络微课堂》1-6 计算机体系结构

常见的计算机网络体系结构 从本节课开始,我们要用 4 次课的时间来介绍有关计算机网络体系结构的知识,具体包含以下内容: 一,常见的计算机网络体系结构二,计算机网络体系结构分层的必要性三,计算机网络体系…

使用OpenCV dnn c++加载YOLOv8生成的onnx文件进行目标检测

在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集,使用 LabelMe 工具进行标注,然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件,并自动生成YOLOv8支持的目录结构,包括melon.yaml文件,其内容…

力扣刷题---2418. 按身高排序【简单】

题目描述 给你一个字符串 数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。 对于每个下标 i,names[i] 和 heights[i] 表示第 i 个人的名字和身高。 请按身高 降序 顺序返回对应的名字数组 names 。 示例 1&…

力扣刷题---961. 在长度 2N 的数组中找出重复 N 次的元素【简单】

题目描述🍗 给你一个整数数组 nums ,该数组具有以下属性: nums.length 2 * n. nums 包含 n 1 个 不同的 元素 nums 中恰有一个元素重复 n 次 找出并返回重复了 n 次的那个元素。 示例 1: 输入:nums [1,2,3,3] 输…

微服务中使用Maven BOM来管理你的版本依赖

摘要: 原创出处 sf.gg/a/1190000021198564 「飘渺Jam」欢迎转载,保留摘要,谢谢! 为什么要使用BOM? 如何定义BOM? 项目使用方法? BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版…

93.网络游戏逆向分析与漏洞攻防-游戏技能系统分析-增强技能信息显示后进行分析

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

STM32中断编程入门

文章目录 一、 理论部分1.中断系统2.中断执行流程3.NVIC的基本结构4.EXTI介绍5.AFIO复用IO口 二、实验目的:学习stm32中断原理和开发编程方法。使用标准完成以下任务:(一)实验一 开关控制LED的亮灭1.代码部分2.运行结果 &#xff…

网络空间安全数学基础·整除与同余

主要内容: 整除的基本概念(掌握) 素数(掌握) 同余的概念(掌握) 1.1整除 定义:设a,b是任意两个整数,其中b≠0,如果存在一个整数q,使 …

如何网页在线编辑 Office word 文档,并支域功能:创建域/插入域/替换域等

在日常在线办公场景中,我们经常会遇到一些复杂的文档编辑需求,特别是我们经常会遇到一些复杂的数学公式,会用到“域”功能,“域”功能便是一个高级且实用的工具。通过设置域,用户可以实现文档的自动化处理,…

卷积神经网络CNN动态演示和输出特征图计算公式

目录 一、卷积运算 1、卷积(Convolution) 2、填充(Padding) (1)Valid Padding (2)Same Padding 3、步长 4、卷积核大小为什么一般为奇数奇数? 5、卷积核kernel和…

【C++】哈希和unordered系列容器

目录 一、unordered系列关联式容器的引入 二、容器使用 2.1 unordered_map的文档说明 2.2 unordered_map的使用 2.3 unordered_set 三、底层结构 3.1 哈希概念 3.2 哈希表 3.3 哈希冲突 3.4 哈希函数 3.5 哈希冲突解决 3.5.1 闭散列 3.5.2 开散列 3.5.3 思考 四…

【微积分】CH16 integrals and vector fields听课笔记

【托马斯微积分学习日记】13.1-线积分_哔哩哔哩_bilibili 概述 16.1line integrals of scalar functions [中英双语]可视化多元微积分 - 线积分介绍_哔哩哔哩_bilibili 16.2vector fields and line integrals: work circulation and flux 向量场差不多也是描述某种…