【MySQL】如何理解MySQL的存储引擎

一、常见存储引擎

我们可以知道表的类型是由存储引擎决定的,如图所示,我们可以看到MySQL中支持八种储存引擎,那么我们这里就介绍常用的三种存储引擎,分别是Innodb、MyISAM、Memory。

二、Innodb、MyISAM、Memory的特点

1、Innodb

Innodb存储引擎提供了具有提交 、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,Innodb写的处理效率差并且会占用更多的磁盘空间保留数据和索引。

2、MyISAM

MyISAM存储引擎不支持事务、也不支持外键,但访问速度很快,对事务的完整性没有要求。

3、Memory

Memory储存引擎使用内存中的内容来创建表。每个Memory表只实际对应一个磁盘文件。Memory类型的表访问非常得快,因为它得数据是放在内存中得,并且默认使用Hash索引。但是服务器一旦关闭,表中数据会丢失,但表的结构还在。(常用:用户的在线情况

三、Innodb与MyISAM的区别

1. InnoDB支持事务,MyISAM不支持。对于InnoDB每一条SQL语言都默认封装成事务,自动提 交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务。

2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败。

3. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。 但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该 过大,因为主键太大,其他索引也都会很大。而MyISAM是非聚集索引,数据文件是分离的, 索引保存的是数据文件的指针。主键索引和辅助索引是独立的。 

4. InnoDB支持行锁,MyISAM支持表锁。InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用 一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快。

5. Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高。

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

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

相关文章

day10-项目集成sharding-jdbc-今日指数

项目集成sharding-jdbc 目标 1.掌握shardingjdbc标准分片模式; 2.理解项目分库分表的设计思路; 3.理解分库分表代码实现流程; 第一章 项目分库分表实现 1、股票数据预期增长分析 ​ 由于今日指数是偏向海量数据分析的产品,而…

Go语言基础总结

一、Go语言结构 包声明 引入包 函数 变量 语句&表达式 注释 下面简单给出hello.go文件。 package src /*定义包名*/import "fmt" /*引入包*/func hello() { /*函数*/fmt.Println("Hello,World!") /*语句&表达式*/fmt.Println("菜鸟教…

2024年华为OD机试真题-抢7游戏-Python-OD统一考试(C卷)

题目描述: A、B两个人玩抢7游戏,游戏规则为A先报一个起始数字X(10<起始数字<10000),B报下一个数字Y(X-Y<3),A再报一个数字Z(Y-Z<3),以此类推,直到其中一个抢到7,抢到7即为胜者;在B赢得比赛的情况下,一共有多少种组合? 输入描述: 起始数字M,如100;10<…

Linux系统下防火墙端口操作

防火墙端口的认识 防火墙是一种网络安全设备&#xff0c;用于监控和控制网络进出流量&#xff0c;其中开放端口是防火墙功能中的一个重要部分&#xff0c;可以确保应用程序和服务正常通信。端口是不同应用程序或服务之间通信的入口或出口&#xff0c;每个端口都有一个数字标识…

go - 学习笔记 - 1

go - 学习笔记 -1 hello world变量值拷贝匿名变量语句分隔符整型&浮点型&布尔型字符串类型strings包的字符串函数 hello world package mainimport "fmt"func main() {fmt.Println("hello world") }变量 package mainimport "fmt"func…

深度学习环境配置常见指令

首先打开anaconda prompt&#xff0c;激活对应虚拟环境。 导入torch并获取对应版本 import torch torch.__version__导入torchvision并获取对应版本 import torchvision torchvision.__version__ 检查cuda是否可用 torch.cuda.is_available() 获取CUDA设备数 torch.cuda.…

OpenBMC的c++代码中的变量初始化问题(一)

1 开发平台 Win11、VS2022、Fedora39。 2 作业目的 通过VS2022跨平台Linux构建openbmc/intel-ipmi-oem的x64可执行模块。 3 问题描述 该模块启动后&#xff0c;在执行subprojects\phosphor-host-ipmid\user_channel\channel_mgmt.cpp 中的函数convertToMediumTypeIndex出现…

leetcode-回溯法-矩阵中的路径

https://www.nowcoder.com/practice/c61c6999eecb4b8f88a98f66b273a3cc?tpId13&tqId11218&tPage4&rp4&ru/ta/coding-interviews&qru/ta/coding-interviews/question-ranking 请设计一个函数&#xff0c;用来判断在一个矩阵中是否存在一条包含某字符串所有…

基于SpringBoot的气象数据监测分析大屏

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

数据仓库选型建议

1 数仓分层 1.1 数仓分层的意义 **数据复用&#xff0c;减少重复开发&#xff1a;**规范数据分层&#xff0c;开发一些通用的中间层数据&#xff0c;能够减少极大的重复计算。数据的逐层加工原则&#xff0c;下层包含了上层数据加工所需要的全量数据&#xff0c;这样的加工方…

GEE必须会教程—邂逅线代中的矩阵(Array类型)

矩阵&#xff0c;一个令人头疼的名字&#xff0c;学过线性代数的友友们想必对矩阵的运算规则烂熟于心&#xff0c;与它延申出来的向量知识曾经让我们深陷其中。矩阵在高级的数据存储中占据着重要的地位。定义字典类型的过程&#xff0c;其实就是寻找key和value关系的过程&#…

Linux系统——Nginx服务状态码总结

目录 一、1xx状态码 100 Continue 101 Switch Protocols 102 Processing 二、2xx状态码 200 OK 201 Created 202 Accepted 203 Non-Authoritative Information 204 No Content 205 Reset Content 206 Partial Content 207 Multi-Status 208 Already Reported 三…

Upload-Labs-Linux1【CTF】

拿到这道题目一看&#xff0c;发现是upload靶场&#xff1b;这不简简单单吗&#xff1b;结果中间还是遇到了一些小问题 小坑总结&#xff1a;该关只识别标准php语法&#xff1a;<?php phpinfo()?>格式&#xff1b;即<?php ?> 不识别<? phpinfo()?> &…

怎么在wifi中实现手机和电脑文件互传

有时我们想手机电脑文件互传&#xff0c;数据线却不在身边&#xff0c;这时我们可以用MiXplorer来实现wifi中手机和电脑互相访问文件。 MiXplorer是一款来自著名安卓开发者论坛XDA的作品&#xff0c;免费且功能强大&#xff0c;被很多人誉为是“全能文件管理器”。 1.在手机上…

程序环境和预处理(1)

文章目录 目录1. 程序的翻译环境和执行环境2. 详解编译链接2.1 翻译环境2.2 编译本身也分为几个阶段2.3 运行环境 3. 预处理详解3.1 预定义符号3.2 #define3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##3.2.5 带副作用的宏参数3.2.6 宏和函数…

数据结构链表力扣例题AC(3)——代码以及思路记录

160. 相交链表 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 AC写法一 struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {//思…

DBAPI如何使用数组类型参数

DBAPI如何使用数组类型参数 需求 根据多个id去查询学生信息 API创建 在基本信息标签&#xff0c;创建参数ids &#xff0c;参数类型选择 Array<bigint> 在执行器标签&#xff0c;填写sql&#xff0c;使用in查询 select * from student where id in <foreach ope…

推荐系统经典模型YouTubeDNN

文章目录 YouTubeDNN概念YouTubeDNN模型架构图YouTubeDNN召回阶段YouTubeDNN层级介绍 YouTubeDNN排序阶段YoutubeDNN模型中的一些Trick负采样问题特征构造上下文选择 总结 YouTubeDNN概念 YouTubeDNN是YouTube用于做视频推荐的落地模型&#xff0c;其大体思路就是召回阶段使用…

33.云原生之Istio管理任何七层流量

云原生专栏大纲 文章目录 Istio存在的问题Aeraki介绍Aeraki 的解决方案支持的协议支持的特性 安装AerakiAeraki教程采用 ServiceEntry 的 Demo 应用使用 Dubbo2Istio 对接 Dubbo 注册表 的 Demo 应用&#xff08;Interface 级流量治理&#xff09; Service Mesh 中有大量的七层…

【小白友好】leetcode 移动零

https://leetcode.cn/problems/move-zeroes/description/ 小白思想 思想上还是首先开一个指针i&#xff0c;i从左到右扫每一个元素&#xff0c;i每发现一个0&#xff0c;就把这个0推到最后&#xff0c;这样i到最后就可以了。 这个和删除元素那个题解的小白思想和一模一样&am…