自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 系统架构师考点--嵌入式技术

​大家好。今天来总结一下嵌入式技术的考点。该考点分值3-5分,上午场选择题和下午场案例题都可能会考,但不是每年都考。

2024-06-22 21:10:51 711

原创 系统架构师考点--数据库系统

大家好。今天我来总结一下数据库系统的相关考点。本考点一般情况下上午场考试占3-5分,下午场案例分析题也会出现。

2024-06-22 12:01:16 572

原创 系统架构师考点--操作系统

操作系统是指能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。管理计算机中运行的程序和分配各种软硬件资源。为用户提供友善的人机界面。为应用程序的开发和运行提供一个高效率的平台。操作系统的4个特征是并发性、共享性、虚拟性和不确定性。设备是计算机系统与外界交互的工具,具体负责计算机与外部的输入/输出工作,所以常称为外部设备(简称外设)。在计算机系统中,将负责管理设备和输入/输出的机构称为I/0 系统。

2024-06-20 09:41:14 553

原创 系统架构师考点--计算机硬件

大家好。今天我总结一下计算机硬件的一些考点。

2024-06-15 18:41:21 986

原创 没事干的话,那就一起考个证吧!!!

软考全称是计算机技术与软件专业技术资格(水平)考试。是由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试,其目的是科学、公正地对全国计算机与软件专业技术人员进行职业资格、专业技术资格认定和专业技术水平测试。计算机软件资格考试设置了27个专业资格,涵盖5个专业领域, 3个级别层次(初级、中级、高级)。软考每年举行两次。通过考试获得证书的人员,表明其已具备从事相应专业岗位工作的水平和能力,用人单位可根据工作需要从获得证书的人员中择优聘任相应专业技术职务(技术员、助理工程师、工程师、高级工程师)。

2024-06-12 23:38:20 494 2

原创 mysql中 什么是锁

大家好。上篇文章我们讲了事务并发执行时可能带来的各种问题,今天我们来聊一聊mysql面试必问的问题–锁。

2024-06-11 23:42:36 1159 2

原创 mysql中 事务的隔离级别与MVCC

insert undo 在事务提交之后就可以被释放掉了,而update undo由于还需要支持MVCC,不能立即删除掉。我们知道,一个事务写的一组undo日志中都有一个Undo Log Header部分,这个Undo Log Header中有一个名为TRX_UNDO_HISTORY_NODE的属性,表示一个名为History链表的节点。当一个事务提交之后,就会把这个事务执行过程中产生的这一组update undo日志插入到History链表的头部。

2024-06-11 10:43:18 1102

原创 mysql中 undo日志(下)

大家好。上篇文章我们讲了什么是undo日志以及我们日常增删改数据时undo日志是如何产生的,今天我们继续来聊一聊这个undo日志。

2024-06-09 23:33:46 819

原创 mysql中 undo日志(上)

大家好。我们知道,事务需要保证原子性,也就是事务中的操作要么全部完成,要么什么也不做。但是我们在开发的过程中肯定都遇到过事务执行到一半就结束,但是事务执行过程中可能已经修改了很多东西的情况,为了保证事务的原子性,这个时候我们就需要把东西改回原先的样子,这个过程称之为回滚(英文名:rollback)。

2024-06-08 21:43:48 838

原创 mysql中 redo日志(下)

大家好。上篇文章我们介绍了什么是redo日志以及redo日志的写入过程。建议没看过上篇文章的同学先看一下《mysql那些事儿》之 redo日志(上),今天我们继续来说一说redo日志。

2024-06-08 10:24:12 696

原创 mysql中 redo日志(上)

大家好。我们知道InnoDB 存储引擎是以页为单位来管理存储空间的,我们进行的增删改查操作其实本质上都是在访问页面。而在真正访问页面之前,需要把在磁盘上的页缓存到内存中的Buffer Pool之后才可以访问。那么我们思考一个问题:如果我们只在内存的Buffer Pool 中修改了页面,在事务提交后突然发生了某个故障,导致内存中的数据都失效了,这个时候已经提交了的事务对数据库中所做的更改也就跟着丢失了。我们如何才能避免这种情况的发生呢?

2024-06-06 21:48:35 629

原创 mysql中事务的简介

大家好。我们在日常开发过程中肯定都或多或少的用到过事务,而且在面试时,数据库的事务也是必问内容之一。今天我们就来说说mysql的事务。为了方便我们下面内容的讲解,我们也先建立一个讲事务必用的表–account表,并在表中插入两条数据。在某个特定的时刻,两个奥特曼在银行所拥有的资产是一个特定的值,这些特定的值也可以被描述为账户在这个特定的时刻现实世界的一个状态。

2024-06-06 10:06:12 1064

原创 mysql中InnoDB存储引擎的Buffer Pool

大家好。众所周知,对于使用InnoDB作为存储引擎的表来说,不管是用于存储用户数据的索引(包括聚簇索引和二级索引),还是各种系统数据,都是存储在磁盘上的。在处理客户端的请求时,当需要访问某个页的数据时,就会把完整的页的数据全部加载到内存中。将整个页加载到内存中后就可以进行读写访问了,在进行完读写访问之后mysql并不会把该页对应的内存空间释放掉,而是将其缓存起来,这样将来有请求再次访问该页面时,就可以省去磁盘IO的开销了。

2024-06-04 22:58:56 1495

原创 mysql中optimizer trace的作用

我们所说的基于成本的优化主要集中在optimize阶段,对于单表查询来说,我们主要关注optimize阶段 的"rows_estimation"这个过程,这个过程深入分析了对单表查询的各种执行方案的成本;enabled的值改为on后我们就可以输入我们想要查看优化过程的查询语句,当该查询语句执行完成后,就可以到information_schema数据库下的OPTIMIZER_TRACE表中查看完整的优化过程。one_line的值是控制输出格式的,如果为on那么所有输出都将在一行中展示,不适合人阅读。

2024-06-04 09:21:49 799

原创 mysql中EXPLAIN详解

大家好。众所周知,MySQL 查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式。在日常工作过程中,我们可以使用EXPLAIN语句来查看某个查询语句的具体执行计划, 今天我们就来聊一聊EXPLAIN语句。如果我们想看看某个查询的执行计划的话,可以在具体的查询语句前边加一个EXPLAIN,就像这样:下面我们仔细聊一下每个列是干什么的。

2024-06-02 22:48:00 1223

原创 mysql中基于规则的优化

大家好。我们在平时开发的过程中可能会写一些执行起来十分耗费性能的语句。当MySQL遇到这种sql时会依据一些规则,竭尽全力的把这个很糟糕的语句转换成某种可以比较高效执行的形式,这个过程被称作查询重写,今天我们就来聊一下mysql在查询重写时遵循的一些比较重要的重写规则。

2024-06-02 17:52:17 1005

原创 mysql中子查询的语法和执行过程

大家好。我们在日常开发过程中,肯定都经常用到了子查询。今天我们就来聊一下mysql中子查询的一些语法以及子查询的执行过程。

2024-05-30 22:53:55 984

原创 mysql中InnoDB的统计数据

大家好。我们知道,mysql中存在许多的统计数据,比如通过SHOW TABLE STATUS 可以看到关于表的统计数据,通过SHOW INDEX可以看到关于索引的统计数据,那么这些统计数据是怎么来的呢?它们是以什么方式收集的呢?今天我们来说说InnoDB 存储引擎的统计数据收集策略。

2024-05-29 22:50:15 1346

原创 mysql中连接查询的成本

大家好。上篇文章我们讲了mysql中成本的含义以及单表查询如何计算成本。现在我们接着讲讲mysql中连接查询的成本。在讲之前,我们先创建两张一样的表single_table和single_table2,并在表中插入10000条数据。在下面的讲解中,我们称single_table为s1,single_table2为s2。

2024-05-27 22:41:30 1081

原创 mysql中单表查询的成本

大家好。我们知道MySQL在执行一个查询时,经常会有多个执行方案,然后从中选取成本最低或者说代价最低的方案去真正的执行查询。今天我们来聊一聊单表查询的成本。那么到底什么是成本呢?我们的表经常使用的MyISAM、InnoDB存储引擎都是将数据和索引都存储到磁盘上的,当我们想查询表中的记录时,需要先把数据或者索引加载到内存中然后再操作。这个从磁盘到内存这个加载的过程损耗的时间称之为I/O 成本。取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间称之为CPU成本。

2024-05-27 09:22:24 912

原创 mysql中连接的原理

从本质上来说,连接就是把各个表中的数据取出来进行依次匹配的过程。例如,把t1和t2两个表连接起来的过程就像下图这样:这个过程看起来就是把t1表的记录和t2的记录连起来组成新的更大的记录,所以这个查询过程称之为连接查询。连接查询的结果集中包含一个表中的每一条记录与另一个表中的每一条记录相互匹配的组合,像这样的结果 集就可以称之为笛卡尔积。如果我们乐意,我们可以连接任意数量张表,但是如果没有任何限制条件的话,这些表连接起来产生的笛卡尔积可能是非常巨大的。

2024-05-26 14:49:39 695

原创 mysql中单表查询方法

大家好。我们知道,mysql有一个查询优化器的模块。当我们用sql语句查询表中记录时,会对这条查询语句进行语法解析,然后就会交给查询优化器来进行优化,优化后生成一个执行计划,这个执行计划表明了应该使用哪些索引进行查询,表之间的连接顺序是啥样的,最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询,并将查询结果返回给用户。今天我们就来介绍一下mysql的单表访问方法。

2024-05-23 21:56:00 753

原创 mysql中InnoDB的表空间--系统表空间

大家好。上篇文章我们讲了InnoDB的独立表空间,我们知道了表空间被划分为许多连续的区,对于大小为16KB的页面来说,每个区默认由64个页组成,每256个区为一组,每个组最开始的几个页的类型是固定的。(在这里强烈建议在看本篇文章之前先看一下上一篇文章)今天我们再来聊一聊–系统表空间。系统表空间的结构和独立表空间基本类似,只不过由于整个MySQL进程只有一个系统表空间,在系统表空间中会额外记录一些有关整个系统信息的页面,所以会比独立表空间多出一些记录这些信息的页面。

2024-05-23 10:15:32 841

原创 mysql中InnoDB的表空间--独立表空间

大家好,上篇文章我们在讲mysql数据目录的时候提到了表空间这个名词,它是一个抽象的概念,对于系统表空间来说,对应着文件系统中一个或多个实际文件;对于每个独立表空间来说,对应着文件系统中一个名为表名.ibd的实际文件。我们可以把表空间比作存储页的容器,当我们想为某个表插入一条记录的时候,就从容器中找出一个对应的页来把数据写进去。今天我们就先来深入聊一下InnoDB的独立表空间。在讲表空间之前,我们先回忆一下页的相关内容,这有助于下面我们对表空间的理解。

2024-05-22 00:13:46 716

原创 mysql中mysql的数据目录

大家好,众所周知,mysql中像InnoDB、MyISAM这种存储引擎都是把数据存储到磁盘上,而我们平时常用的操作系统是用文件系统来管理磁盘的。所以我们可以说像InnoDB 、MyISAM这样的存储引擎都是把表存储在文件系统上的。当我们想读取数据的时候,这些存储引擎会从文件系统中把数据读出来返回给我们,当我们想写入数据的时候,这些存储引擎会把这些数据又写回文件系统。那么今天我们就来说一说InnoDB和MyISAM这两个存储引擎的数据如何在文件系统中存储的。

2024-05-21 09:42:19 758

原创 mysql中索引的使用

大家好,我们知道创建索引是要付出时间和空间的代价的,只有合理的创建索引才能提高查询效率。今天我们来聊一聊如何优雅的,合理的使用索引。上篇文章我们讲到了在索引在where查询过程中是如何发挥作用的,今天我们再谈谈索引在排序和分组的时候是如何使用的。为了方便讲解,我们依然建立一个test_table表并创建了一个聚簇索引(id)、三个二级索引(c1、c2、(c4、c5)),其中c4和c5为联合索引。注意:c3列没有创建索引。

2024-05-20 09:34:35 772

原创 mysql中索引如何在查询执行期间发挥作用

这条sql和上一条sql很像,只是c4查询条件多了个 = ,但就是多的这个 = 让两条sql对应的扫描区间不同,这条sql在查询时,对于 c4 <='a’条件的二级索引记录来说,满足 c5 = ‘a’ 条件的数据可能并没有连续在一起,但是对于c4 ='a’条件的二级索引记录来说,满足 c5 = ‘a’ 条件的数据是连续在一起,所以只要扫描到不符合 c4 =‘a’ 并且 c5 = ‘a’ 条件的记录时,就可以停止扫描,所以这条sql对应的扫描区间就是[(-∞,+∞),(‘a’,‘a’)]。

2024-05-18 23:46:15 658

原创 mysql中B+树索引

MyISAM是将索引和数据分开存储:将表中的记录按照记录的插入顺序单独存储在一个文件中,称之为数据文件。这个文件并不划分为若干个 数据页,有多少记录就往这个文件中塞多少记录就成了。我们可以通过行号而快速访问到一条记录。MyISAM在插入数据的时候并没有刻意按照主键大小排序,所以无法使用二分法进行查找记录。使用MyISAM 存储引擎的表会把索引信息另外存储到一个称为索引文件的另一个文件中。在索引的叶子节点中存储的不是完整的用户记录,而是主键值 + 行号的组合。

2024-05-18 09:16:28 841

原创 mysql中InnoDB的数据页的结构

一开始新生成的数据页是没有User Records (用户记录)部分的,当有记录插入时,就会从Free Space(空闲空间)部分申请一部分空间来存储插入的记录,随着插入记录的增多,Free Space(空闲空间)部分的空间会全部被User Records (用户记录)部分替代,这个时候再新插入数据的时候便会新产生一个页。当组中记录超过8条时,会将组拆分成两个组,一个组4条,一个组5条,然后新生成的组会在数据页中的Page Directory部分新增一个槽,用来存放新生成组的最大记录的偏移量。

2024-05-17 10:05:19 660

原创 mysql中InnoDB记录存储结构

大家好,众所周知,InnoDB是一个将表中数据存储到磁盘上的存储引擎。今天就来浅谈一下mysq数据库默认的存储引擎InnoDB是以什么样的形式将数据存放到磁盘上的。平时我们看到的数据库中的数据库都是以一条条记录的形式展示的,例如下图所示。这些记录在磁盘的存放形式也就是本文讲的记录存储结构称之为行格式。在InnoDB存储引擎中有4种不同类型的行格式,分别是COMPACT、REDUNDANT、DINAMIC和COMPRESSED。下面分别讲一下这四个行格式。

2024-05-16 11:25:53 807

原创 mysql查询请求处理过程

今天和大家分享一下mysql查询请求的处理过程,写的不好的地方多多包涵,话不多说,直接上图!服务器程序在处理客户端发来的请求时,大致分3部分:连接管理、解析优化、存储引擎。接下来详细描述一下3部分做了什么。

2024-05-15 10:58:45 541

原创 CentOS 8 安装yum工具时报错为 repo ‘appstream’ 下载元数据失败

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-03-27 16:10:38 2423 2

原创 JPA多源数据库配置(达梦数据库)

JPA多源数据库配置(达梦数据库)1.准备工作2.创建JPA配置3.创建实体类4.创建Repository5.注解+切面实现两个数据源事物统一6.创建Service7.创建Controller 本篇文章主要介绍SpringBoot框架实现Jpa多源数据库的配置,本次使用国产数据库达梦数据库做为数据源。1.准备工作在pom.xml文件中引入Spring Data Jpa依赖: <dependency> <groupId>org.springframework

2020-10-31 15:46:50 2017 8

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除