MySQL进阶--存储引擎

目录

  • 一、简介
  • 二、什么是存储引擎?
  • 三、MySQL中常用的存储引擎
    • 1.InnoDB
    • 2.MyISAM
    • 3.Memory
    • 4.三种存储引擎对比
  • 四、存储引擎的选择
  • PS:

一、简介

本文的内容讲的是MySQL中的存储引擎的相关知识,初步认识MySQL中的存储引擎及各引擎的特点~

二、什么是存储引擎?

先看看MySQL体系结构图
在这里插入图片描述
在这里插入图片描述
存储引擎就是存储数据建立索引更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的,所以存储引擎也可以被称为表引擎

默认存储引擎是InnoDB

三、MySQL中常用的存储引擎

可以看出MySQL中的存储引擎有很多种,常用的是以下三个

1.InnoDB

InnoDB 是一种兼顾高可靠性高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB 是默认的 MySQL 引擎。

特点:
● DML 操作遵循 ACID 模型,支持事务
● 行级锁,提高并发访问性能
● 支持外键约束,保证数据的完整性和正确性

文件:
● xxx.ibd: xxx代表表名,InnoDB 引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。

参数:innodb_file_per_table,决定多张表共享一个表空间还是每张表对应一个表空间

innodb_file_per_table是一个InnoDB存储引擎的参数,用于控制表的存储方式。它有以下两个可能的取值:

  • 如果innodb_file_per_table的值为ON,表示每个InnoDB表都有自己的独立表空间文件。也就是说,每个表都有一个单独的.ibd文件用于存储其数据。
  • 如果innodb_file_per_table的值为OFF,表示所有的InnoDB表共享一个表空间文件。也就是说,所有表的数据都会存储在一个共享的.ibdata文件中。

通过执行SHOW VARIABLES LIKE 'innodb_file_per_table';命令,可以获取当前数据库中innodb_file_per_table参数的值。

该命令的返回结果:
在这里插入图片描述
InnoDB 逻辑存储结构:
在这里插入图片描述

2.MyISAM

MyISAM 是 MySQL 早期默认存储引擎。

特点:
● 不支持事务,不支持外键
● 支持表锁,不支持行锁
● 访问速度快

文件:
● xxx.sdi: 存储表结构信息
● xxx.MYD: 存储数据
● xxx.MYI: 存储索引

3.Memory

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

特点:
● 存放在内存中,速度快
● hash索引(默认)

文件:
● xxx.sdi: 存储表结构信息

4.三种存储引擎对比

在这里插入图片描述

四、存储引擎的选择

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

● InnoDB: 如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,则 InnoDB 是比较合适的选择
● MyISAM: 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不高,那这个存储引擎是非常合适的。
● Memory: 将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。Memory 的缺陷是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性

PS:

感谢您的阅读!如果您觉得本篇文章对您有所帮助,请给予博主一个喔~

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

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

相关文章

Redis 安装以及配置隧道连接

目录 1.CentOS 1. 安装Redis 2. Redis 启动和停⽌ 3. 操作Redis 2.Ubuntu 1. 安装Redis 2. Redis 启动/停⽌ 3. 操作 Redis 3.开启隧道 3.1 Xshell 配置隧道 3.2 windTerm 配置隧道 3.3 FinalShell配置隧道 4.可视化客户端连接 Another Redis Desktop Manager 1.Cen…

Unity Image(RawImage) 实现按轴心放大缩小,序列化存储轴心信息,实现编译器窗口保存轴心

工作时分配给我的要实现的功能,写的时候遇到挺多的坑的,在此记录一下 效果 放大缩小的效果 2.编译器扩展窗口记录 实现点 1.Json序列化存储图片轴心位置, 放大倍率,放大所需要的事件 2.用了编译器扩展工具便于保存轴心信息坑点 1.Imag…

深度学习:探究Tensor和Numpy

目录 引言 1 pytorch中Tensor 1.1 什么是Tensor 1.2 为什么需要Tensor 1.3 如何创建Tensor 1.3.1 从已有其他数据结构转化创建为Tensor 1.3.2 随机初始化一个Tensor 1.3.3 从已保存文件加载一个Tensor 1.4 Tensor的特性 1.4.1 丰富的常用函数操作 1.4.2 灵活的dtype和…

maven开发利器:idea安装maven依赖分析插件 Maven Helper,谁用谁知道!

大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。 这篇博客给大家介绍一款博主实战开发中一直在使用的pom开发分析利器,教大家玩转maven:使用idea安装 Maven Helper 插件,可以分析依…

企业电子招标采购系统源码Spring Boot + Mybatis + Redis + Layui + 前后端分离 构建企业电子招采平台之立项流程图 tbms

 项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&am…

数据结构-链表

🗡CSDN主页:d1ff1cult.🗡 🗡代码云仓库:d1ff1cult.🗡 🗡文章栏目:数据结构专栏🗡 目录 目录 代码总览: 接口slist.h: slist.c: 1.什么是链表 1.1链…

用C语言构建一个数字识别卷积神经网络

卷积神经网络的具体原理和对应的python例子参见末尾的参考资料2.3. 这里仅叙述卷积神经网络的配置, 其余部分不做赘述,构建和训练神经网络的具体步骤请参见上一篇: 用C语言构建一个手写数字识别神经网路 卷积网络同样采用简单的三层结构,包括输入层con…

k8s pod数据存储Volumes

一、说在前面的话 在 Kubernetes 的 Deployment 中,您可以使用多种类型的 Volumes 来管理 Pod 中的数据。 作用是用来共享目录及配置,不用在每个pod里进行配置。 本文主要概述怎么使用HostPath、PersistentVolumeClaim、ConfigMap。 二、k8s有哪些Vol…

《golang设计模式》第一部分·创建型模式-04-抽象工厂模式(Abstract Factory)

文章目录 1. 概述1.1 角色1.2 类图 2. 代码示例2.1 设计2.2 代码2.3 类图 1. 概述 1.1 角色 AbstractFactory(抽象工厂):它声明了一组用于创建产品的方法,每一个方法对应一种产品。ConcreteFactory(具体工厂&#xf…

vue el-input 使用 回车键会刷新页面的问题

场景: vue项目中 在输入框输入字符并按下回车键搜索时,不会进行搜索, 而是会刷新页面 原因: 当form表单中只有一个input时,按下回车建会自动触发页面的提交功能, 产生刷新页面的行为 解决: 在…

Spring 事务详解(注解方式)

目 录 序言 1、编程式事务 2、配置声明式事务 2.1 基于TransactionProxyFactoryBean的方式(不常用,因为要为每一个类配置TransactionProxyFactoryBean) 2.2 基于AspectJ的XML方式(常用,可配置在某些类下的所有子…

无涯教程-Perl - unless...else 语句函数

Perl 除非语句后可以跟可选的 else 语句,该语句在布尔表达式为true时执行。 unless...else - 语法 Perl编程语言中的unless... else 语句的语法为- unless(boolean_expression) {# statement(s) will execute if the given condition is false } else {# stateme…

322. 零钱兑换

322. 零钱兑换 原题链接:完成情况:一开始错误原因 解题思路:参考代码:__322 零钱兑换__错误思路还得是dp去做 原题链接: 零钱兑换 完成情况: 一开始错误 原因 /*解题思路:1.先sort一下coins…

react ant icon的简单使用

refer: 快速上手 - Ant Design 1.引入ant npm install antd --save 2.在页面引用: import { StarOutlined } from ant-design/icons; 如果想要引入多个icon,可以这样书写: import { UserOutlined, MailOutlined, PieChartOutlined } fr…

2023年第三届工业自动化、机器人与控制工程国际会议 | IET独立出版 | EI检索

会议简介 Brief Introduction 2023年第三届工业自动化、机器人与控制工程国际会议(IARCE 2023) 会议时间:2023年10月27 -30日 召开地点:中国成都 大会官网:www.iarce.org 2023年第三届工业自动化、机器人与控制工程国际…

SocialFi 的开发中如何利用 NFTScan API 获取 NFT 数据

SocialFi 作为社交媒体与 Web3 的创新融合,致力于构建更加开放去中心化的社交平台。它赋能用户拥有数据控制权、实现内容价值,并通过代币经济建立起激励与治理机制,这正是 Web3 社交的独特魅力所在。SocialFi 为我们描绘了一个更加用户驱动、…

数据安全能力框架模型-详细解读(三)

数据安全能力框架内涵 “奇安信数据安全能力框架”体现了数据安全治理从组织机构安全治理,到数字化环境具体管控、分析能力分层逐步落实的工程方法。 它以企业数据安全的战略目标和风险容忍度为输入,明确数据安全治理的组织;以合规与治理需…

AtcoderABC227场

A - Last CardA - Last Card 题目大意 一共 K 张卡片分发给 N 个人,这些人的编号为 1, 2, …, N 从第 A 个人开始,按照顺序依次将卡片发给以下人员:A, A1, A2, …, N, 1, 2, …问最后一个卡片将发给哪个人? 具体来说,…

uniapp自定义头部导航栏

有时我们需要一些特殊的头部导航栏页面,取消传统的导航栏,来增加页面的美观度。 下面我就教大家如何配置: 一、效果图 二、实现 首先在uniapp中打开pages.json配置文件,在单个路由配置style里面设置导航栏样式​​​​​​nav…

【网络基础实战之路】基于MGRE多点协议的实战详解

系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS:本要求基于…