数据库(2)

目录

6.buffer pool,redo log buffer和undo logo,redo logo,bin log概念以及关系?

7.从准备更新一条数据到事务的提交的流程描述?

8.能说下myisam和innodb的区别吗?

9.说下MySQL的索引有哪些吧?

10.什么是B+树?为什么B+树成为主要对的SQL数据库的索引实现?

6.buffer pool,redo log buffer和undo logo,redo logo,bin log概念以及关系?

        buffer pool是MySQL的一个非常重要的组件,因为针对数据库的增删改操作都是在buffer pool中完成的。

        undo log记录的是数据操作前的样子

        redo log记录的是数据被操作后的样子(redo log是innodb存储引擎特有)。

        bin log记录的是整个操作记录(这个对于主从复制具有非常重要的意义)。

7.从准备更新一条数据到事务的提交的流程描述?

首先执行器根据MySQL的执行计划来查询数据,先是从缓存池中查询数据,如果没有就会去数据库中查询,如果查询到了就将其放到缓存池中。

在数据被缓存到缓存池的同时,会写入undo log日志文件。

更新的动作是在bufferpool中完成的,同时会将更新后的数据添加到redo log buffer中。

完成以后就可以提交事务,在提交的同时会做以下三件事:

将redo log buffer中的数据刷入到redo log文件中,

将本次操作记录写入到bin log文件中,

将bin log文件名字和更新内容在bin log中的位置记录到redo log中,同时在redo log最后添加commit标记。

8.能说下myisam和innodb的区别吗?

myisam引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且myisam不支持外键,并且索引和数据是分开存储的。

innodb是基于B+tree索引建立的,和myisam相反它支持事务、外键,并且通过MVCC来支持高并发,索引和数据存放在一起。

9.说下MySQL的索引有哪些吧?

索引在什么层面?

首先,索引是在存储引擎层实现的,而不是在服务层实现的,所以不同存储引擎具有不同的索引类型和实现。

有哪些?

B+tree索引

是大多数MySQL存储引擎的默认索引类型。

哈希索引

哈希索引能以o(1)时间进行查找,但是失去了有序性;

Innodb存储引擎 有一个特殊的功能叫"自适应哈希索引",当某个索引值被使用的非常频繁时,会在B+tree索引之上再创建一个哈希索引,这样就让B+tree索引具有哈希索引的一些优点,比如快速的哈希查找。

全文索引

myisam存储引擎支持全文索引,用于查找文本中的关键词,而不是直接比较是否相等。查找条件使用match against,而不是普通的where。

全文索引一般使用倒排索引实现,它记录着关键词到其所在文档的映射。

Innodb存储索引在MySQL 5.6.4版本也开始支持全文索引。

空间数据索引

myisam存储索引支持空间数据索引,可以用于地理数据存储。空间数据索引会从所有维度来索引数据,可以有效地使用任意维度来进行组合查询。

10.什么是B+树?为什么B+树成为主要对的SQL数据库的索引实现?

什么是B+树?

B+树是基于B tree和叶子节点顺序访问指针进行实现,它具有b tree的平衡性,并且通过顺序访问指针来提高区间查询的性能。在B+树中,一个节点中的key从左到右非递减排列,如果某个指针的左右相邻key分别是keyi和keyi+1,且不为null,则该指针指向节点的所有key大于等于keyi且小于等于keyi+1。

为什么是B+tree?

为了减少磁盘读取次数,决定了树的高度不能高,所以鼻血是先b-tree;

以页为单位读取使得一次I/O就能完全载入一个节点,且相邻的节点也能够被预先载入;所以数据放在叶子节点,本质上是一个page页;

为了支持范围查询以及关联关系,页中数据需要有序,且页的尾部节点指向下个页的头部。

B+树索引可以分为聚簇索引和非聚簇索引?

        1.主索引就是聚簇索引(也称为聚集索引,clusteres index);

        2.辅助索引(有时也称为非聚簇索引或者二级索引,secondary index,non-cluster index)。

如上图,主键索引的叶子节点保存的是真正的数据。而辅助索引叶子节点的数据区保存的是主键索引关键字的值。

假如要查询name=C的数据,其搜索过程如下:1)现在辅助索引中通过C查询最后找到主键id=9;

2)在主键索引中搜索id=9的数据,最终在主键索引的叶子节点中获取到真正的数据。所以通过辅助索引进行检索,需要检索两次索引。

之所以这样设计,一个原因就是:如果和myisam一样在主键索引和辅助索引的叶子节点中都存放数据行索引指针,一旦数据发生迁移,则需要去重新组织维护所有的索引。

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

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

相关文章

基于Pytorch实现图像分类——基于jupyter

分类任务 网络基本构建与训练方法,常用函数解torch.nn.functional模块nn.Module模块 MNIST数据集下载 from pathlib import Path import requestsDATA_PATH Path("data") PATH DATA_PATH / "mnist"PATH.mkdir(parentsTrue, exist_okTrue)U…

vue3中使用webstocket

1.在项目中创建webstocket.ts文件 export default class SocketService {// 单例static instance null;static get Instance() {if (!this.instance) {this.instance new SocketService();}return this.instance;}// 和服务端连接的socket对象ws null;// 存储回调函数callB…

202206青少年软件编程(scratch图形化) 等级考试试卷(四级)

第1题:【 单选题】 执行下列程序, 说的内容是? ( ) A:使 B:命 C:初 D:心 【正确答案】: D 【试题解析】 : 注意标点符号也是一个字符, 连接后字符串是“牢记使命! 不忘初心, …

宝藏免费音乐软件LX music

欢迎来到我的博客,代码的世界里,每一行都是一个故事 宝藏免费音乐软件LX music 前言LX Music的特色功能:音乐播放的新境界安装与配置:在不同平台上使用LX Music下载页面 主题定制 本文将深入研究LX Music,一款备受欢迎…

pytorch车牌识别

目录 使用pytorch库中CNN模型进行图像识别收集数据集定义CNN模型卷积层池化层全连接层 CNN模型代码使用模型 使用pytorch库中CNN模型进行图像识别 收集数据集 可以去找开源的数据集或者自己手做一个 最终整合成 类别分类的图片文件 定义CNN模型 卷积层 功能:提…

opencv基础图行展示

"""试用opencv创建画布并显示矩形框(适用于目标检测图像可视化) """ # 创建一个黑色的画布,图像格式(BGR) img np.zeros((512, 512, 3), np.uint8)# 画一个矩形:给定左上角和右下角坐标&#xff0…

Redis入门到通关之Hash命令

文章目录 ⛄介绍⛄命令⛄RedisTemplate API❄️❄️添加缓存❄️❄️设置过期时间(单独设置)❄️❄️添加一个Map集合❄️❄️提取所有的小key❄️❄️提取所有的value值❄️❄️根据key提取value值❄️❄️获取所有的键值对集合❄️❄️删除❄️❄️判断Hash中是否含有该值 ⛄…

文献阅读:猕猴的单个基底外侧杏仁核神经元表现出与额叶皮层不同的连接模式

文献介绍 「文献题目」 Single basolateral amygdala neurons in macaques exhibit distinct connectional motifs with frontal cortex 「研究团队」 Peter H. Rudebeck(美国西奈山伊坎医学院) 「发表时间」 2023-10-18 「发表期刊」 Neuron 「影响因…

Springboot+Vue项目-基于Java+MySQL的母婴商城系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

Ubuntu去除烦人的顶部【活动】按钮

文章目录 一、需求说明二、打开 extensions 网站三、安装 GNOME Shell 插件四、安装本地连接器五、安装 Hide Activities Button 插件六、最终效果七、卸载本地连接器命令参考 本文所使用的 Ubuntu 系统版本是 Ubuntu 22.04 ! 一、需求说明 使用 Ubuntu 的过程中,屏…

【大语言模型】应用:10分钟实现搜索引擎

本文利用20Newsgroup这个数据集作为Corpus(语料库),用户可以通过搜索关键字来进行查询关联度最高的News,实现对文本的搜索引擎: 1. 导入数据集 from sklearn.datasets import fetch_20newsgroupsnewsgroups fetch_20newsgroups()print(fNu…

在Linux驱动中,如何确保中断上下文的正确保存和恢复?

大家好,今天给大家介绍在Linux驱动中,如何确保中断上下文的正确保存和恢复?,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 在Linux驱动中&am…

AI图书推荐:如何在课堂上使用ChatGPT 进行教育

ChatGPT是一款强大的新型人工智能,已向公众免费开放。现在,各级别的教师、教授和指导员都能利用这款革命性新技术的力量来提升教育体验。 本书提供了一个易于理解的ChatGPT解释,并且更重要的是,详述了如何在课堂上以多种不同方式…

STM32利用软件I2C通讯读MPU6050的ID号

今天的读ID号是建立在上篇文章中有了底层的I2C通讯的6个基本时序来编写的。首先需要完成的就是MPU6050的初始化函数 然后就是编写 指定地址写函数: 一:开始 二:发送 从机地址读写位(1:读 0&#xff1…

MySQL之索引失效、覆盖、前缀索引及单列、联合索引详细总结

索引失效 最左前缀法则 如果索引了多列(联合索引),要遵守最左前缀法则,最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将部分失效(后面的字段索引失效)。 联合索…

第1章 计算机网络体系结构

王道学习 【考纲内容】 (一)计算机网络概述 计算机网络的概念、组成与功能;计算机网络的分类; 计算机网络的性能指标 (二)计算机网络体系结构与参考模型 计算机网络分层结…

权威Scrum敏捷开发企业级实训/敏捷开发培训课程

课程简介 Scrum是目前运用最为广泛的敏捷开发方法,是一个轻量级的项目管理和产品研发管理框架。 这是一个两天的实训课程,面向研发管理者、项目经理、产品经理、研发团队等,旨在帮助学员全面系统地学习Scrum和敏捷开发, 帮助企业快速启动敏…

Ansys Workbench拓扑优化教程

很基础。 前言 进行拓扑优化的好处在于可以简化结构,满足力学性能的同时简化结构。 如赵州桥的一大一小的拱,就可以用拓扑优化优化出来,可见一千四百多年以前古人的智慧是多么丰富。 步骤 大体的步骤是需要 1.先导入模型(需…

练习题(2024/4/13)

1长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1&am…

ThreadX:怎么确定一个线程应该开多少内存

ThreadX:如何确定线程的大小 在实时操作系统(RTOS)ThreadX中,线程的大小是一个重要的参数。这个参数决定了线程的堆栈大小,也就是线程可以使用的内存空间。那么,我们应该如何确定一个线程需要多大的字节呢…