【研究生复试】计算机软件工程人工智能研究生复试——资料整理(速记版)——数据库

1、JAVA
2、计算机网络
3、计算机体系结构
4、数据库
5、计算机租场原理
6、软件工程
7、大数据
8、英文 自我介绍

4. 数据库

1. B+树相对于B树的区别及优势

  • B树中有重复元素,B树没有重复元素
  • B树种每个节点都存储了key和data,B+树内节点去掉了其中指向数据(data record)的指针,使得每个节点中可以存放更多的key,意味着树的高度可以被压缩
  • B+树的叶子节点是链表形式,可以更方便的进行顺序遍历。而B树相邻的元素可能在内存中不相 邻,所以缓存命中性没有B+树好。
  • B+树查找更稳定,都是从根节点到叶节点
  • 在这里插入图片描述

2、聚簇索引和非聚簇索引

聚簇索引(一级索引):

将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据物理有序,叶子节点保存了数据
在这里插入图片描述

mysql中聚簇索引的设定: 聚簇索引默认是主键,如果表中没有定义主键,InnoDB 会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB 会隐式定义一个主键来作为聚簇索引。
InnoDB 只聚集在同一个页面中的记录。包含相邻健值的页面可能相距甚远。

非聚簇索引(辅助索引、二级索引):

将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置
叶子节点保存的是id(主键),然后回表(二次查找)
在这里插入图片描述
在这里插入图片描述

  • undo log
    回滚操作而诞生的机制,当出现错误时,根据undo log进行回滚。
    在这里插入图片描述

undo:增删改 update delete insert
undo Log两大类:
新增操作,事务提交后可以直接删除
update和delete,配合mvcc使用
在这里插入图片描述
在这里插入图片描述

  • undo log和redo log的区别
    redo log解决的是系统崩溃的问题,当是一个事务提交后,只进行了一半操作,可以使用redo log日志
    重做。所以,事务提交后,先写redo log(应该是先写undo log),然后再执行相应的操。
    只有在日志记录全部都安全落盘,然后在最后写上“Commit Record”后,表示所有的操作记录我都写完啦。

undo log:
redo log太慢,没有写完redo log, 数据库是不能写的。
即使事务提交前磁盘 I/O 有足够空闲、即使某个事务修改的数据量非常庞大,占用大量的内存缓冲,无论何种理由,都决不允许在事务提交之前就开始修改磁盘上的数据,万一系统崩溃了,数据出差谁负责呀?
这就需要引入Undo Log(回滚日志),在偷摸写入数据之前,必须先在Undo Log中记录都写入了什么数据,改了什么地方,到时候事务回滚了,就按照Undo Log日志,一条条恢复到原来的样子,就像没有改过一样。
Undo Log还有一个作用,就是实现多个行版本控制(MVCC),当读取的某一行被其他事务锁定时,它可以从 Undo Log 中获取该行记录以前的数据是什么,从而提供该行版本信息,让用户读取。

4、 MVCC部分

多版本并发控制。避免并发操作出现问题,使得数据一致。
可以实现读已提交(解决脏读)和可重复读(解决脏读和不可重复读),但是mvcc不能解决幻读,需要用锁机制解决。
使用undo log和readview来解决

  • 实现读已提交:
    每个select都创建一个readview
  • 实现可重复读:
    一个事务种的第一个select创建readview,之后的select不再创建
    查找undo log种的版本(四步):

innodb种会记录未提交事务的id,从小到大。

  • 判断该版本是否为当前事务创建
  • 判断是否比最小的小
  • 判断是否比最大(max_trx_id)的大
  • 。。。。

5、主从复制

主:负责写
从:负责读
数据如何同步的?
在这里插入图片描述

数据延时问题解决:
主服务器:先写binlog,再同步过去,发送等待slave的ACK回应,再写数据。

6、 分库分表

  • 水平拆分
  • 垂直拆分
    插数据流程:先找库,再找表。
    奇数偶数分库,取余操作分表。

7、sql执行过程s

在这里插入图片描述

8、 锁

  • S锁,共享锁,读锁
    select user from table where id < 10 lock in share mode;
  • X锁,排他锁,写锁
    select from table for update;

锁没有mvcc效率高。
意向共享锁(IS)
意向排他锁(IX)
意向锁用来判断是否加锁了。

死锁

myisam没有死锁

9、 - 索引失效

在这里插入图片描述

10、 - 数据库调优

  • 查看索引是否失效
    like %开头
    字符串没有单引号
    联合索引没有符合最左匹配原则
    使用了range方位查找
    or左右只有一个主键字段。
  • 优化数据库的结构
    使用频率低的表作为新表
    使用频率高的字段冗余为一个表
    需要联合查询的表建立中间表
  • 分解关联查询
  • 优化limit分页
    原来:select * from table limit 10000, 10
    改成:select * from table where id >= 10000 limit 10
    这样使用了主键,可以优化。

11、 - explain中的字段

  • id 查询中的序列号
  • select_type: 表示 select 查询的类型,主要是用于区分各种复杂的查询,例如: 普通查询 、 联
    合查询 、 子查询 等。
  • table:表名
  • type(重要):从上到下,最好–>最差
    system:只有一行或者空表,基本不可能存在
    const:表中只有一行记录匹配,主键或者unique索引
    eq_ref:联合查找,前面的唯一对应后面的表
    ref:匹配多行
    fulltext:全文索引,优先级很高,比普通索引优先级高
    ref_or_null:和ref类似
    index_merge
    unique_subquery
    index_subquery
    range
    index: 索引全表扫描,把索引从头到尾扫一遍。这里包含两种情况:一种是查询使用了覆盖索引,那么它只需要扫描索引就可以获得数据,这个效率要比全表扫描要快,
    All: 全表扫描,没有使用索引。
  • filtered:查出的结果/内部查询时所读的行数的百分比,100%说明大概率走了索引
  • extra(重要):distinct:在select部分使用了distinc关键字
    Using filesort:当 Extra 中有 Using filesort 时,不能通过索引顺序达到排序效果.
    Using index:“覆盖索引扫描”, 表示查询在索引树中就可查找所需数据, 不用扫描表数据文件,往往说明性能不错
    Using temporary: 查询有使用临时表, 一般出现于排序, 分组和多表 join 的情况, 查询效率不高, 建议优化.

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

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

相关文章

【C++11】:unordered系列关联式容器

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关unordered系列关联式容器的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;…

VNCTF 2024 Web方向 WP

Checkin 题目描述&#xff1a;Welcome to VNCTF 2024~ long time no see. 开题&#xff0c;是前端小游戏 源码里面发现一个16进制编码字符串 解码后是flag CutePath 题目描述&#xff1a;源自一次现实渗透 开题 当前页面没啥好看的&#xff0c;先爆破密码登录试试。爆破无果…

鸿蒙应用开发工程师招聘多吗?工资有多少呢?

随着鸿蒙操作系统的快速普及&#xff0c;越来越多的企业开始重视鸿蒙应用开发人才的培养和引进。那么&#xff0c;目前市场上鸿蒙应用开发工程师招聘多吗&#xff1f;工资有多少呢&#xff1f; 首先&#xff0c;我们来了解一下鸿蒙应用开发工程师的招聘情况。随着鸿蒙操作系统…

第三百五十回

文章目录 1. 概要介绍2. 获取方法2.1 获取语言2.2 获取地址 3.示例代码3. 内容总结 我们在上一章回中介绍了"给geolocator插件提交问题"相关的内容&#xff0c;本章回中将介绍如何获取系统语言.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概要介绍 我们在本…

【plt.imshow显示图像】:从入门到精通,只需一篇文章!【Matplotlib】

【plt.imshow显示图像】&#xff1a;从入门到精通&#xff0c;只需一篇文章&#xff01;【Matplotlib】 &#x1f680; 利用Matplotlib进行数据可视化示例 &#x1f335;文章目录&#x1f335; &#x1f4d8; 1. plt.imshow入门&#xff1a;认识并安装Matplotlib库&#x1f308…

【数据结构】17 二叉树的建立

二叉树的建立 由于树是非线性结构&#xff0c;创建一颗二叉树必须首先确定树中结点的输入顺序&#xff0c;常用方法是先序创建和层序创建。 层序创建所用的节点输入序列是按数的从上至下从左到右的顺序形成的各层的空结点输入数值0。在构造二叉树过程中需要一个队列暂时存储各…

gitlab runner 安装、注册、配置、使用(K8S部署)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

C++中获取成员函数地址的方法

C中获取成员函数地址的方法 文章目录 C中获取成员函数地址的方法[toc]前言方法1&#xff1a;通过联合体的共享储存机制方法2&#xff1a;通过汇编取成员函数偏移得到地址调用方法和测试案例 前言 ​ 这里我一共总结了两种目前可以说是最高效易用的方法来获取成员函数地址&…

深度学习主流开源框架:Caffe、TensorFlow、Pytorch、Theano、Keras、MXNet、Chainer

2.6 深度学习主流开源框架 表2.1 深度学习主流框架参数对比 框架关键词总结 框架关键词基本数据结构&#xff08;都是高维数组&#xff09;Caffe“在工业中应用较为广泛”&#xff0c;“编译安装麻烦一点”BlobTensorFlow“安装简单pip”TensorPytorch“定位&#xff1a;快…

探索设计模式的魅力:揭秘模版方法模式-让你的代码既灵活又可维护

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、开篇二、应用场景一坨坨代码实现存在的问题 三、解决方案模式方法结构示意图及说明用模板方法模式重构示例解决的问题 四、工作原理使用模板方法模式重写示例结构图核心结构&#xff1a;抽象类和具体实现 五、总结…

【Effective Objective - C】—— 内存管理

【Effective Objective - C】—— 内存管理 前言29.理解引用计数引用计数工作原理关闭ARC模式属性存取方法中的内存管理自动释放池保留环要点 30.以ARC简化引用计数使用ARC时必须遵守的方法命名规则变量的内存管理语义ARC如何清理实例变量要点 31.在dealloc方法中只释放引用并解…

基于深度置信网络的多模态过程故障评估方法及应用

源自&#xff1a;自动化学报 作者&#xff1a;张凯, 杨朋澄, 彭开香, 陈志文 “人工智能技术与咨询” 发布 摘 要 传统的多模态过程故障等级评估方法对模态之间的共性特征考虑较少, 导致当被评估模态故障信息不充分时, 评估的准确性较低. 针对此问题, 首先, 提出一种共性–…

Arrays工具类的常见方法总结

一、Arrays.asList( ) 1.作用&#xff1a;Arrays.asList( )方法的作用是将数组转换成List&#xff0c;将List中的全部集合对象添加至ArrayList集合中 2.参数&#xff1a;动态参数 (T... a) 3.返回值&#xff1a;List 集合 List<T> 4.举例&#xff1a; package com…

删除windows自带输入法

ctrl shift F 搜狗简繁体切换

【第二十四课】二分图:acwing-860染色法判定二分图 / acwing-861二分图的最大匹配 ( c++代码 )

目录 二分图是什么 acwing-860染色法判定二分图 染色法 代码 acwing-861二分图的最大匹配 思路 代码 二分图是什么 学习二分图的目的就是一些题目可以简化成二分图的模型来求解。 二分图也就是&#xff1a;一个无向图顶点集&#xff0c;分成了两堆顶点(可以理解为两…

分布式文件系统 SpringBoot+FastDFS+Vue.js【三】

分布式文件系统 SpringBootFastDFSVue.js【三】 七、创建后台--分角色管理7.1.创建后台数据库表7.2.创建实体类7.2.1.Admin7.2.2.Menu7.2.3.MenuBean7.2.4.Role7.2.5.RoleMenu 7.3.编辑配置文件application.yml7.4.编写工具类7.4.1.AuthContextHolder7.4.2.HttpUtils7.4.3.Stri…

《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)

文章目录 7.1 使用 Go Modules 管理依赖 - 掌舵向未来7.1.1 基础知识讲解7.1.2 重点案例&#xff1a;Web 服务功能描述实现步骤扩展功能 7.1.3 拓展案例 1&#xff1a;使用数据库功能描述实现步骤扩展功能 7.1.4 拓展案例 2&#xff1a;集成 Redis 缓存功能描述实现步骤扩展功能…

Sora 和之前 Runway 那些在架构上有啥区别呢?

问&#xff1a;Sora 和之前 Runway 那些在架构上有啥区别呢&#xff1f; 答&#xff1a;简单来说 Runway 是基于扩散模型&#xff08;Diffusion Model&#xff09;的&#xff0c;而 Sora 是基于 Diffusion Transformer。 Runway、Stable Diffusion 是基于扩散模型&#xff08…

MySQL 插入10万条数据性能分析

MySQL 插入10万条数据性能分析 一、背景 笔者想复现一个索引失效的场景&#xff0c;故需要一定规模的数据作支撑&#xff0c;所以需要向数据库中插入大约一百万条数据。那问题就来了&#xff0c;我们应该怎样插入才能使插入的速度最快呢&#xff1f; 为了更加贴合实际&#…

cool Node后端 中实现中间件的书写

1.需求 在node后端中&#xff0c;想实现一个专门鉴权的文件配置&#xff0c;可以这样来解释 就是 有些接口需要token调用接口&#xff0c;有些接口不需要使用token 调用 这期来详细说明一下 什么是中间件中间件顾名思义是指在请求和响应中间,进行请求数据的拦截处理&#xf…