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) 向函数传递一维…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
