Mysql的学习笔记

news2024/10/6 7:20:09

目录

1、rc 级别的 mvcc 和 rr 级别的mvcc 有啥区别?

2、Innodb与MyIsam的文件结构?

3、Innodb 与MyIsam的简单对比?

4、innodb,Alter table 改字段类型,底层会经历什么过程?

5、Alter table 改字段类型 ,需要注意哪些问题?

6、Innodb 与 MyISam 主键索引与其他索引的区别?

7、mysql为什么要用b+树,不用b树?


1、rc 级别的 mvcc 和 rr 级别的mvcc 有啥区别?

ead Committed(RC)和 Repeatable Read(RR)都是支持多版本并发控制(MVCC)机制的事务隔离级别,它们之间的区别在于事务的可见性和并发性

可见性:RC级别,只能看到其他事务提交的最新版本。RR级别可以看到新旧版本。RR可见性高。
并发性:RC级别,多个事务可以读取到同一记录的最新版本。RR级别下,多个事务可能读取到不同的版本。

场景:RC 隔离级别下的 MVCC 机制适合读多写少的场景,可以提高数据库的并发性能和可伸缩性;而 RR 隔离级别下的 MVCC 机制适合读写并发的场景,可以保证数据的一致性和可靠性。需要根据具体的业务场景和性能需求选择合适的事务隔离级别。

2、Innodb与MyIsam的文件结构?

Myism物理文件结构为:
.frm文件:与表相关的元数据信息都存放在frm文件,包括表结构的定义信息等。
.myd文件:myisam存储引擎专用,用于存储myisam表的数据
.myi文件:myisam存储引擎专用,用于存储myisam表的索引相关信息

Innodb的物理文件结构为:
.frm文件:与表相关的元数据信息都存放在frm文件,包括表结构的定义信息等。
.ibd文件和.ibdata文件:
这两种文件都是存放innodb数据的文件,之所以用两种文件来存放innodb的数据,是因为innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是用独享表空间存放存储数据。

独享表空间存储方式使用.ibd文件,并且每个表一个ibd文件
共享表空间存储方式使用.ibdata文件,所有表共同使用一个ibdata文件

3、Innodb 与MyIsam的简单总结对比?

InnoDB 特点:

  • 支持事务和外键约束。
  • 支持行级锁定,可以提高并发性能。(MyIsam是表级别锁定)
  • 支持崩溃恢复机制,可以保证数据的可靠性。
  • 支持多版本并发控制(MVCC)机制,可以提高并发性能和可伸缩性。
  • 适合于读写并发的场景,对于需要频繁更新的数据表,InnoDB 的性能比 MyISAM 更高。(MyIsam 适合于读多写少的场景,对于只读的数据表,MyISAM 的查询性能比 InnoDB 更高。)

4、innodb,Alter table 改字段类型,底层会经历什么过程?

  1. 创建一个新的临时表,该表的结构与原表相同,但修改了目标字段的数据类型。
  2. 将原表中的数据逐行复制到临时表中,同时将目标字段的数据类型进行转换。
  3. 在复制数据的过程中,如果发现某行数据无法转换为目标数据类型,则会将该行数据的目标字段设置为 NULL。
  4. 复制完成后,使用 RENAME TABLE 命令将原表重命名为备份表,将临时表重命名为原表。
  5. 删除备份表。

需要注意的是,如果原表中存在索引,则在修改字段类型后需要重新创建索引。

5、Alter table 改字段类型 ,需要注意哪些问题?

  • db 磁盘空间可能不够,因为要新建table和索引

6、Innodb 与 MyISam 主键索引与其他索引的区别?

  • innodb的主键index树的叶子节点,存放的是数据。 MyIsam存的是数据的物理地址。数据和索引放在一起,叫做聚簇index,MyIsam那种叫做非聚簇index
  • innodb的其他索引树,叶子节点存的是主键id,myIsam的二级索引树,叶子节点存的和主键索引树一样,都是物理地址。(innodb数据移动的时候,二级索引的叶子节点不需要改动,因为存的是主键id,MyIsam就全部都要改动)
  • innodb一定要有主键,因为二级索引存的是主键key,根据主键key再去叶子节点找数据。(InnoDB的索引实现后,就很容易明白为什么不建议使用过长的字段作为主键,因为所有辅助索引都引用主索引,过长的主索引会令辅助索引变得过大。再例如,用非单调的字段作为主键在InnoDB中不是个好主意,因为InnoDB数据文件本身是一颗B+Tree,非单调的主键会造成在插入新记录时数据文件为了维持B+Tree的特性而频繁的分裂调整,十分低效,而使用自增字段作为主键则是一个很好的选择。)

MyISam 的主键索引和二级索引

Innodb 的主键索引和二级索引树

7、mysql为什么要用b+树,不用b树?

  1. B+树,非叶子节点不存储数据,只存储索引,但是B树是既存了数据又存了索引。B+树可以减少磁盘 I/O 操作,提高查询性能。也可以减少锁竞争,提高并发性能。
  2. B+树,叶子节点之间用指针链接,B树没有。于是B+树可以支持范围查询和排序操作,也更合适内存缓存。

综上所述,B+ 树相对于 B 树具有更好的磁盘存储、范围查询、内存缓存和高并发性能,更适合作为 MySQL 的索引结构。

图1是一个简单的B-Tree。

图1

图2是一个简单的B+Tree示意。

图2

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

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

相关文章

Zebec Protocol 与 PGP 深度合作,将流支付更广泛的应用薪资支付领域

随着传统机构的入局,以及相关加密合规法规的落地,加密支付正在成为一种备受欢迎的全新支付方式。加密支付基于区块链底层,不受地域、时间等的限制,能够实时到账,具备去中心化、非许可等特性。 流支付是一种具备创新性的…

Jmeter和Postman做接口测试的区别你知道吗

区别1:用例组织方式 不同的目录结构与组织方式代表不同工具的测试思想,学习一个测试工具应该首先了解其组织方式。 Jmeter的组织方式相对比较扁平,它首先没有WorkSpace(工作空间)的概念,直接是TestPlan(测…

搜索旋转排序数组(leetcode 33)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路思路复杂度分析 5.实现示例参考文献 1.问题描述 整数数组按升序排列,数组中的值互不相同 。 假设数组在预先未知的某个点上进行了旋转。 如数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2]。 搜索一个给定的目…

如何安装Nginx服务

目录 一、Nginx服务 Nginx的并发能力受影响因素 二、Nginx与Apache的差异 Nginx相对于Apache的优点 Apache相对于Nginx的优点 三、阻塞/非阻塞 四、同步/异步 Nginx应用场景 五、编译安装Nginx服务 关闭防火墙和安全机制 安装依赖环境 将相关包导入/opt当中 进入指…

Linux分区的基本概念。

文章目录 前言 一、分区概念 1,书名,主引导纪录(MBR) 2,正文,就是硬盘中纪录的数据。 3,索引相当于硬盘中的分区表 3.1主分区(存放地址&#xff0…

React、Vue项目build打包编译后如何再修改后台请求地址

vue项目大家都了解,开发用 npm run dev/npm run serve。而要上线则必须是先将项目打包编译 npm run build 之后成为了普通的静态网页才可上线进行部署及发布。同样这时候我们也已经将代码全部写好了。如果说要改里面的某个值或者修改请求地址我们应该怎么办呢&#…

IDEA中创建编写JSP

一、安装Tmocat并配置环境 安装请参考:https://www.cnblogs.com/weixinyu98/p/9822048.html 安装请参考:https://www.cnblogs.com/zhanlifeng/p/14917777.html 注意:在安装成功Tomcat测试是否成功安装时,访问“http://localhost:8…

selenium自动化教程及使用java来爬取数据

目录 一、介绍二、下载浏览器驱动1.获取要下载的驱动版本号2.下载驱动 三、Maven如下四、简单使用五、定位器1.定位器2.说明(1) class name 定位器(2) css selector 定位器(3) id 定位器(4) name 定位器(5) link text 定位器(6) partial link text 定位器(7) tag 定位器(8) xpa…

Android 内存检测LeakCanary

在github上下载了一个项目:安装debug版本会产生两个apk,一个是apk本身,一个是Leaks release版本就正常 不会产生这个问题,百思不得其解,第一次遇到这个问题。 看到这篇博客豁然开朗:在build.gradle.kts 里…

3天爆肝整理,性能测试问题汇总+解决办法(重要)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 开始性能测试前需…

入门孪生网络3-------使用一维卷积神经网络1DCNN与孪生网络的组合模型来实现excel数据的分类

文章目录 前言入门孪生网络的第三小节,我尝试使用keras或tensorflow2框架来搭建一个数据分类的网络。大家可以参考的程序思路,我也是小白,可以评论区一起讨论。 一、孪生网络与1DCNN组合网络的搭建思路二、我编写的孪生网络与1DCNN组合网络程…

操作教程:EasyCVR视频融合平台如何配置平台级联?

EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,在视频能力上,平台可实现视频直播、录像、回放、检索、云存储、告警上报、语音对讲、电子地图、集群、智能分析以及平台级联等。平台可拓展性强、开放度高、部署轻快&…

干货讲解,财务报表结构分析

财务报表的构成是对企业财务状况、经营成果和现金流量的结构性表述。企业必须重视财务结构对经营业绩的影响,才能解决发展中的问题。 资产质量关注两个角度,一是资产结构,二是现金含量。 资产结构是什么意思呢?就是固定资产和无…

Linux 定时任务提权

Linux 定时任务提权 1.概述2.定时任务创建3.提权步骤 1.概述 定时任务(cron job)是Linux系统中的一个守护进程,用于调度重复任务,通过配置crontab可以让系统周期性地执行某些命令或者脚本。cron 是 Linux 系统中最为实用的工具之…

apple pencil二代平替笔哪个好用?苹果平板触控笔

随着互联网的快速发展,移动数码产品如手机、平板电脑、笔记本等正逐步进入人们的日常生活。同时电容笔的出现,也让这些产品的功能作用更上一层楼。由于苹果原装电容笔的价格非常贵,使得国内出现了越来越多的平替电容笔。总的来说,…

前端开发:基于cypress的自动化实践

如何在vue中使用cypress如何运行cypress如何编写测试用例如何解决测试数据的问题遇到的元素定位的问题如何看待cypresscypress是否为最佳工具测试怎么办? 如何在vue中使用cypress vue提供了vue-cli 可以快速的创建vue项目。 vue create hello-world在选择安装项里…

【亲测】集群环境中MMDetection3.0环境配置

本文记录下在集群环境下使用MMDetection的内容。 环境简介:所用集群设备为本地集群,具有管理节点和计算节点,且管理和计算在不同的主机上,作为用户,没有超级管理员权限。 MMdetection源码下载点击进入 这里主要记录下环…

二叉树题目:二叉树的中序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围进阶 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题:二叉树的中序遍历 出处:94. 二叉树的中序遍历 难度 3 级 题目描…

Windows Terminal添加至鼠标右键

Windows Terminal添加至鼠标右键 安装 在Microsoft Store中即可下载。 配置 在鼠标右键打开 下载Terminal图标 图标地址:https://raw.githubusercontent.com/microsoft/terminal/master/res/terminal.ico 下载后保存在某个文件夹path 添加到鼠标右键 批处理修改注册表 …

Linux常见指令(超详解哦)

Linux常见指令 引言Linux常见指令查指令——man文件管理相关指令lspwdcdtouchmkdirrmdir与rmrmdirrm cpmvfind 文件查看类catmorelesshead 与 tailheadtail使用管道显示某段内容 grep 打包压缩相关指令zip/unziptar 总结 引言 Linux与我们熟悉的Window都是操作系统&#xff0c…