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语句,从而改变从数据库中的数据,完成同步。

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

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

相关文章

【NumPy】关于numpy.genfromtxt()函数,看这一篇文章就够了

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

一款功能强大的安卓虚拟机应用——VMOS Pro使用分享

前段时间我刚刚分享一个WeChat平板模块能够允许用户自由修改系统设置,让你的Android备用手机焕发新生,实现手机PAD化,实现两台设备同时登录微信号。今天我分享的这个相比WeChat更为简单,因为它可以通过虚拟机的方式进行多种androi…

java文档管理系统的设计与实现源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的文档管理系统的设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 文档管理系统的…

H4vdo 台湾APT-27视频投放工具

地址:https://github.com/MartinxMax/H4vdo 视频 关于 H4vdo RTMP lock 屏播放视频工具,可以向目标发送有效载荷,播放目标的屏幕内容。目标无法曹作计算机 使用方法 安装依赖 根据你的操作系统选择一个安装程序 RTMP 服务端 ./rtsp-simple-server.…

C语言学习笔记--运算符与表达式(7521字爆肝)

上午好,本来想上午改简历下午学习c语言的,但想了一下上午精力充沛还是用来学习比较好,虽然现在失业了,但住在我姨家有吃有住的,再次感谢我姨,我要抓紧时间修改简历,然后找个工作搬出去&#xff…

SpringBean-生命周期

Spirng Bean 元信息配置阶段 1 面向资源 xml配置(很熟悉了不做讨论)Properties配置 public class BeanMetaDemo {public static void main(String[] args) {DefaultListableBeanFactory factory new DefaultListableBeanFactory();PropertiesBeanDef…

vscode插件-06 Python

文章目录 Python(一般安装这一个就行)Pylance(跟随Python自动安装)Python Debugger(跟随Python自动安装)LiveCode for pythonSort linesPython Extension Pack(一般不安装)python snippets Python(一般安装这一个就行) 这个扩展是由微软官方提供的,支持但不仅限于以…

手撕C语言题典——轮转数组

目录 前言 一,思路 1)暴力求解 O(N^2) 2)三段逆置 二,代码实现 前言 随着C语言的深入,我们准备转向C方面学习,学习C之前我们需要搞懂时间复杂度,这个蛮重要的,我们将通过几个题…

RK3568笔记二十五:RetinaFace人脸检测训练部署

若该文为原创文章,转载请注明原文出处。 一、介绍 Retinaface是来自insightFace的又一力作,基于one-stage的人脸检测网络。RetinaFace是在RetinaNet基础上引申出来的人脸检测框架,所以大致结构和RetinaNet非常像。 官方提供两种主干特征提取网…

DVWA代码审计--文件上传

NO.1 Low 首先来看下代码 <?php if( isset( $_POST[ Upload ] ) ) { // Where are we going to be writing to? $target_path DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/"; $target_path . basename( $_FILES[ uploaded ][ name ] ); // Can we move the f…

u盘里文件损坏无法打开怎么恢复?五种方法恢复数据全解析

有时可能会遇到&#xff1a;插入U盘后&#xff0c;发现里面的文件损坏无法打开&#xff0c;有多种方法可以尝试来恢复损坏的文件。本文将介绍常见的方法解决U盘文件损坏无法打开的问题。 1. 使用文件修复工具 许多文件修复工具可以修复损坏文件。这些工具能够检测并修复文件中…

网关路由SpringCloudGateway、nacos配置管理(热更新、动态路由)

文章目录 前言一、网关路由二、SpringCloudGateway1. 路由过滤2. 网关登录校验2.1 鉴权2.2 网关过滤器2.3 登录校验2.3.1 JWT2.3.2 登录校验过滤器 3. 微服务从网关获取用户4. 微服务之间用户信息传递 三、nacos配置管理问题引入3.1 配置共享3.1.1 在Nacos中添加共享配置3.1.2 …

蓝桥杯物联网竞赛_STM32L071KBU6_关于sizo of函数产生的BUG

首先现象是我在用LORA发送信息的时候&#xff0c;左边显示长度是8而右边接收到的数据长度却是4 我以为是OLED显示屏坏了&#xff0c;又或者是我想搞创新用了const char* 类型强制转换数据的原因&#xff0c;结果发现都不是 void Function_SendMsg( unsigned char* data){unsi…

【Unity2D 2022:Cinemachine】相机跟随与地图边界

一、导入Cinemachine工具包 1. 点击Window-Package Manager&#xff0c;进入包管理界面 2. 点击All&#xff0c;找到Cinemachine工具包&#xff0c;点击Install 二、相机跟随角色 1. 选中Main Camera&#xff0c;点击Component-Cinemachine-CinemachineBrain&#xff0c;新建…

面了一个程序员,因为6休1拒绝了我

人一辈子赖以生存下去的主要就考虑三件事&#xff0c;职业&#xff0c;事业&#xff0c;副业&#xff0c;有其1-2都是很不错的。如果还没到40岁&#xff0c;那不妨提前想下自己可能遇到的一些情况&#xff0c;提前做一些准备&#xff0c;未雨绸缪些。 今年整体就业大环境也一般…

05 JavaSE-- 异常、IOStream、多线程、反射、Annotation、泛型、序列化

Exception 异常 异常也是对象&#xff0c;也有自己的体系&#xff0c;在这个体系中&#xff0c;所有异常对象的根类是 throwable 接口。异常和 error 错误是不同的概念。 错误是严重的 JVM 系统问题&#xff0c;一般不期待程序员去捕获、处理这些错误&#xff0c;同时&#xf…

55. UE5 RPG 处理当前功能在多人模式中的问题

在UE里面&#xff0c;我们运行项目可以设置多种网络模式&#xff0c;主要是分为三种&#xff1a; 运行Standalone 就是单人模式&#xff0c;没有网络交互以监听服务器运行&#xff0c;在界面里运行的游戏会作为服务器使用以客户端运行&#xff0c;UE会单独运行一个线程作为服务…

面向对象-----继承

前面向大家介绍了面向对象中的封装性&#xff0c;今天再来向大家介绍面向对象的继承和多态的两大特性。 1.继承 1.1 为什么需要继承&#xff1f; 在java语言中&#xff0c;我们用类来描述世间万物&#xff0c;虽然万物非常复杂&#xff0c;但总有一些共同点&#xff0c;如果…

深入Django项目实战与最佳实践

title: 深入Django项目实战与最佳实践 date: 2024/5/19 21:41:38 updated: 2024/5/19 21:41:38 categories: 后端开发 tags: Django 基础项目实战最佳实践数据库配置静态文件部署高级特性 第一章&#xff1a;Django项目架构与设计原则 Django框架概述 Django是一个高级的P…

linux的用户管理

新建用户&#xff1a;1.useradd 2.passwd 完成的操作&#xff1a; (1)/etc/passwd添加一行 (2)/etc/shadow添加一行 (3)/etc/group添加一行 (4)创建用户家目录 (5)创建用户邮件文件 例&#xff1a;创建用户jerry&#xff0c;要求: uid:777&am…