Mysql总结1
Mysql常见日志
(1)错误日志:记录数据库服务器启动、停止、运行时存在的问题;
(2)慢查询日志:记录查询时间超过long_query_time的sql语句,其中long_query_time可配置,且慢查询日志默认关闭;
(3)一般查询日志:记录数据库的连接信息以及所有的sql语句;
(4)二进制日志:即bin log,记录所有修改数据库状态的sql语句及这些sql语句的执行时间,修改数据库的语句包含了insert、delete、update等操作,该日志属于逻辑日志,会记录MyISAM、InnoDB引擎数据库的所有修改操作,以便进行数据恢复和主从复制,该日志仅在事务提交前提交,仅写磁盘一次。对于该日志的写入,是通过追加的方式进行的,不会覆盖已有的内容。
当数据发生丢失后,该日志可将数据库恢复到特定的时间点;主服务器上的二进制日志可以被从服务器读取,从而实现数据同步。该日志包含了二进制索引文件和二进制日志文件两部分;
(5)重做日志:即redo log,记录了每个对InnoDB表的写操作,记录的是数据页的物理变化,用来实现事务的持久性。该日志包含了重做日志缓存、重做日志文件两部分,前者在内存中,后者在磁盘中,当事务提交后会把所有修改信息存储到重做日志文件中,写入时使用循环写入和擦除的方式进行;
(6)回滚日志:即undo log,用于记录数据被修改前的信息,用于事务回滚,实现事务的原子性和持久性,也是实现MVCC多版本并发控制的关键部分,属于逻辑日志。
当delete一条记录时,undo log中会记录一条对应的insert记录,回滚时插入这一条被删除的数据,反之亦然;当update一条记录时,它记录一条对应相反的update记录,回滚时修改回去。当执行rollback时,就可以从undo log中的逻辑记录读取到相应的内容并进行回滚。
MVCC
MVCC是多版本并发控制,指维护一个数据库的多个版本,使得读写没有冲突,解决数据的并发问题。在支持MVCC的数据库中,当多个用户访问数据时,每个用户都能看到某个时间点前的数据库快照,并能够无阻塞、无干扰地执行查询和修改操作,MVCC主要通过版本链和ReadView机制实现的。
对于版本链,通过隐藏字段实现的。每一行数据都有3个隐藏字段:
(1)DB_TRX_ID:保存创建这个版本的事务ID,即最后一项修改该记录或插入该记录最新版本的事务ID;
(2)DB_ROLL_PTR:回滚指针,指向这条记录的上一个版本,用于配合undo log;
(3)DB_ROW_ID:隐藏主键,如果表结构没有指定主键,将会生成该隐藏字段。
在undo log日志中,存在一个版本链,存储数据的旧版本,当更新一行数据时,不会覆盖原数据,而是产生一个新版本的数据,并更新DB_TRX_ID、DB_ROLL_PTR插入到版本链中,使得其指向前一个版本的数据,这样可通过版本链找到旧版本的数据,逻辑图如下:
ReadView读视图机制用于确定事务的哪些版本的行记录是可见的,解决一致性读问题。当事务创建时,会为事务创建一个ReadView记录,其中包含4个信息:
(1)creator_trx_id:创建ReadView的事务id;
(2)m_ids:活跃的事务id集合,指的是开始但未提交的事务;
(3)min_trx_id:活跃事务中最小的事务id,即m_ids中最小的事务id;
(4)max_trx_id:事务ID的最大值加1,即即将创建的事务id。
当一个事务读某条数据时,根据ReadView判断数据的某个版本是否可见:
(1)若被访问数据的DB_TRX_ID的值小于min_trx_id,则该数据对当前事务可见,因为该版本数据已被提交;
(2)若被访问数据的DB_TRX_ID的值大于max_trx_id,则该数据对当前事务不可见,创建该数据版本的事务在生成ReadView后开始执行的,尚未提交;
(3)DB_TRX_ID在min_trx_id与max_trx_id之间时,若m_ids中未包含DB_TRX_ID,则该版本数据对当前事务可见,因为该数据版本的事务在生成ReadView后已提交;若包含DB_TRX_ID,则该版本数据对当前事务不可见,因为该数据版本的事务仍处于活跃状态,或在当前事务生成 ReadView后开始。
对于可重复读和读已提交,生成ReadView有以下区别:
对于可重复读,在第一次读取数据时生成一个ReadView,ReadView一直保持到事务结束不发生变化,这样可以保证在事务中多次读取同一行数据时,读取到的数据是一致的。
对于读已提交,每次读取数据前都生成一个 ReadView,这样就能保证每次读取的数据都是最新的。
主从复制
是一种数据同步机制,将数据从一个主数据库复制到多个从数据库,广泛用于数据恢复、灾难恢复。
主从复制分为以下几步:
(1)在主数据库中,执行数据库修改操作时(Insert、Updata、Delete等),将这些操作语句写入到bin log(二进制日志),在这些操作完成后,主数据库的log dump线程将二进制日志中的内容发送给从数据库;
(2)从数据库接收到二进制日志的内容后,通过IO线程将其写到从数据库的中继日志中(relay log);
(3)从数据库中的sql线程读取中继日志,并在本地数据库中执行读取到的sql语句,从而改变从数据库中的数据,完成同步。
相关文章:

Mysql总结1
Mysql常见日志 (1)错误日志:记录数据库服务器启动、停止、运行时存在的问题; (2)慢查询日志:记录查询时间超过long_query_time的sql语句,其中long_query_time可配置,且…...

three.js能实现啥效果?看过来,这里都是它的菜(05)
这是第五期了,本期继续分享three.js可以实现的3D动画案例,捎带讲一下如何将模型导入到three.js中。 如何将模型导入three.js中 three.js可以通过多种方式导入3D模型,以下是其中几种常见的方法: 使用three.js自带的OBJLoader或M…...
innerText和innerHTML的区别
innerHTML和innerText都是元素的属性,通过修改这个元素的属性可以达到修改元素内容的目的。但是二者之间略有不同。具体来说,它们的区别如下: innerHTML可以获取或设置元素内部的HTML内容,包括HTML标签,而innerText则…...

O2OA(翱途)开发平台数据统计如何配置?
O2OA提供的数据管理中心,可以让用户通过配置的形式完成对数据的汇总,统计和数据分组展现,查询和搜索数据形成列表数据展现。也支持用户配置独立的数据表来适应特殊的业务的数据存储需求。本文主要介绍如何在O2OA中开发和配置统计。 一、先决…...
网关过滤器使用及其原理分析
1.网关过滤器介绍 网关过滤器的用途一般是修改请求或响应信息,例如编解码、Token验证、流量复制等 官方文档地址:Spring Cloud Gateway 网关过滤器分为GloablFilter、GatewayFilter及DefaultFilter 过滤器的执行顺序由Order决定,Order值越小,优先级越高,越先执行 1.1…...

jiebaNET中文分词器
最近我接手了一个有趣的需求,需要对用户评价进行分词,进行词频统计和情绪分析,并且根据词频权重制成词云图以供后台数据统计,于是我便引入了jieba分词器,但是我发现网上关于jiebaNET相关文档实在太少了,甚至连配置文件…...

springboot3项目练习详细步骤(第四部分:文件上传、登录优化、多环境开发)
目录 本地文件上传 接口文档 业务实现 登录优化 SpringBoot集成redis 实现令牌主动失效机制 多环境开发 本地文件上传 接口文档 业务实现 创建FileUploadController类并编写请求方法 RestController public class FileUploadController {PostMapping("/upload&…...
视觉里程计的融合方法及优缺点分析
视觉里程计是视觉slam的一部分,即前端部分,用于前端跟踪并建立局部地图。多用于重定位或辅助定位,常用的有特征点法,光流法和直接法,其区别和优缺点如下。 特征点法,需要计算特征点和描述子,计算…...
SQL常用基础语句(一)-- FGHIJ开头
GROUP BY GROUP BY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。在GROUP BY子句后面包含了一个HAVING子句,HAVING类似于WHERE,(唯一的差别是WHERE过滤行,HAVING过滤组࿰…...

大语言模型量化方法对比:GPTQ、GGUF、AWQ 包括显存和速度
GPTQ: Post-Training Quantization for GPT Models GPTQ是一种4位量化的训练后量化(PTQ)方法,主要关注GPU推理和性能。 该方法背后的思想是,尝试通过最小化该权重的均方误差将所有权重压缩到4位。在推理过程中,它将动态地将其权重去量化为f…...

实现本地访问云主机,以及在云主机搭建FTP站点
前言 云计算是一种基于互联网的计算模式,通过网络提供按需访问的计算资源和服务。核心概念是把计算能力视作一种公共资源,用户可以根据自身需求动态分配和管理这些资源。 云主机 ECS (Elastic Compute Server)是一种按需获取的云端服务器,提…...

存储+调优:存储-Cloud
存储调优:存储-Cloud Master Server 配置: IP192.168.1.254 useradd mfs tar zxf mfs-1.6.11.tar.gz.gz cd mfs-1.6.11 ./configure --prefix/usr --sysconfdir/etc --localstatedir/var/lib --with-default-usermfs --with-default-groupmfs --disabl…...

海山数据库(He3DB)线程池方案详解
前言 对于应用开发人员来说肯定听说过连接池,却不一定听说过线程池,虽然二者都是池化的概念,但还是有所不同的: 连接池面向的是数据库连接,是针对数据库Client侧的优化。连接池可将数据库连接数固定在一定范围内&#…...

K8s 高级调度
文章目录 K8s 高级调度CronJobinitContainerTaint 和 Toleration污点(Taint)容忍(Toleration) AffinityNodeAffinityPodAnffinity 和 PodAntiAffinity 总结 K8s 高级调度 CronJob 在 k8s 中周期性运行计划任务,与 li…...

数据猿携手IDC Directions 2024:探索中国ICT市场新趋势
大数据产业创新服务媒体 ——聚焦数据 改变商业 近日,ICT业界人士、行业数字化专家,以及来自投资机构、协会、智库的近500位嘉宾聚首北京,参加了IDC Directions 2024:中国ICT市场趋势论坛(北京站)活动。活…...

前端开发工程师——ajax
express框架 终端输入 npm init --yes npm i express 请求报文/响应报文 // 1.引入express const express require(express);// 2.创建应用对象 const app express();// 3.创建路由规则 // request:是对请求报文的封装 // response:是对响应报文的封装 app.get(…...
uni-app项目在微信开发者工具打开时报错[ app.json 文件内容错误] app.json: 在项目根目录未找到 app.json
uni-app项目在微信开发者工具打开时报错[ app.json 文件内容错误] app.json: 在项目根目录未找到 app.json 出现这个问题是因为打开的文件地址不对,解决这个问题首先我们要查看是否有unpackage文件夹,如果有,项目直接指向unpackage\dist\dev\…...

最大连续1的个数(滑动窗口)
算法原理: 这道题大眼一看是关于翻转多少个0的问题,但是,如果你按照这种思维去做题,肯定不容易。所以我们要换一种思维去做,这种思维不是一下就能想到的,所以想不到也情有可原。 题目是:给定一…...
Spring Cloud 框架的应用详解
Spring Cloud 框架的应用详解 Spring Cloud 是一个基于 Spring Boot 的微服务架构开发工具,它提供了一系列工具用于快速构建分布式系统中的常见模式,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、选举、分布式会话和集群状态管理…...

C语言 数组——向函数传递数组
目录 把数组传给函数(Passing Arrays to Functions) 向函数传递一维数组 向函数传递二维数组 数组在学生成绩管理中的应用 例:计算每个学生的平均分 把数组传给函数(Passing Arrays to Functions) 向函数传递一维…...

7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...