深入理解MySQL三大日志:redo log、binlog、undo log

图片

前言

MySQL是一个功能强大的关系型数据库管理系统,它的高可靠性、高性能和易用性使得它成为众多企业和开发者的首选。在MySQL内部,为了保证数据的完整性、恢复能力和并发性能,设计了一套复杂的日志系统。其中,redo log、bin log和undo log是MySQL中最为重要的三种日志,它们各自扮演着不同的角色,共同维护着数据库的稳定运行。

一、MySQL的日志系统概述

MySQL的日志系统是其稳定性和性能的重要保障。MySQL的日志主要包括以下几种:

  1. 错误日志(Error Log):记录启动、运行或停止mysqld时出现的问题。

  2. 查询日志(General Query Log):记录已连接到MySQL服务器的客户端所执行的SQL语句。

  3. 慢查询日志(Slow Query Log):记录执行时间超过指定阈值的SQL语句。

  4. 二进制日志(Binary Log,简称bin log):记录所有更改数据或可能更改数据的SQL语句,并以二进制格式保存在磁盘上。

  5. 重做日志(Redo Log):InnoDB存储引擎特有的日志,用于保证事务的ACID特性。

  6. 回滚日志(Undo Log):也是InnoDB存储引擎特有的日志,用于事务的回滚操作。

二、Redo Log详解

Redo Log是InnoDB存储引擎特有的日志,用于记录事务中的数据修改操作,并保证在数据库系统崩溃时能够恢复数据。【持久性:D】

图片

1. 刷盘时机:

  • 在事务提交时,为了保证数据的持久性,会将redo log写入磁盘。

  • 后台线程定期将redo log写入磁盘。

  • 当redo log缓冲区满时,会触发写入磁盘的操作。

图片

2. 刷盘策略:

  • InnoDB存储引擎采用了异步刷盘的方式,即提交事务时,先写入redo log缓冲区,然后后台线程异步地将数据写入磁盘。

  • 这种策略可以提高数据库的写入性能,但也可能在数据库崩溃时造成数据丢失。因此,需要合理配置刷盘策略,以平衡性能和可靠性。

3. 日志文件组:

  • Redo Log通常由多个日志文件组成,形成一个循环写入的日志文件组。当一个日志文件写满后,会切换到下一个日志文件继续写入。

4. 日志记录流程:

  • 当事务开始时,InnoDB会为该事务分配一个唯一的事务ID。

  • 事务中的每个数据修改操作都会被记录为一条redo log记录,并包含事务ID和修改的数据页信息。

  • 这些redo log记录会被写入redo log缓冲区,并等待异步刷盘操作。

5. 保证数据库的恢复能力

Redo Log通过一系列机制来保证数据库的恢复能力。以下是Redo Log如何起作用的关键方面:

1). 记录物理级别上的页修改操作:

Redo Log记录的是数据页上的物理修改操作。当事务对数据库进行修改时,这些修改首先被记录在Redo Log中,而不是直接写入数据文件。这种先写日志再写磁盘的技术(Write-Ahead Logging,WAL)确保了即使在数据库崩溃的情况下,修改操作也不会丢失。

2). 循环缓冲区与持久化存储:

Redo Log采用循环缓冲区的方式存储修改操作。当缓冲区满时,最旧的记录会被覆盖。这种设计使得Redo Log可以高效地管理日志空间,同时保证数据库在崩溃后能恢复到最后提交的事务状态。此外,Redo Log Buffer本身也是一种持久化存储的数据结构,即使系统崩溃,其中的数据也能在恢复过程中被保护和使用。

3). 崩溃恢复机制:

当数据库崩溃后重启时,系统会根据Redo Log中的记录来恢复数据。具体来说,数据库系统会找到Redo Log中最后一个已提交的事务,并将该事务所做的修改操作重新应用到数据页上,从而恢复数据的一致性。这一过程确保了即使在数据库崩溃的情况下,也能保证数据的完整性和正确性。

4). 优化性能与减少磁盘I/O:

直接将数据从Buffer Pool刷新到磁盘可能会导致大量的随机I/O操作,从而影响性能。使用Redo Log可以将数据先写入内存中的日志缓冲区,然后通过批量刷写的方式将数据写入磁盘。这种方式减少了磁盘I/O操作的次数,提高了整体性能和吞吐量。

综上所述,Redo Log通过记录物理级别的页修改操作、采用循环缓冲区与持久化存储、实现崩溃恢复机制以及优化性能与减少磁盘I/O等方式,确保了数据库在崩溃或其他故障情况下的恢复能力。

6. 配置InnoDB存储引擎的刷盘策略

配置InnoDB存储引擎的刷盘策略,主要涉及到调整innodb_flush_log_at_trx_commit参数。这个参数控制了事务提交时日志的刷盘策略,它有三个可选的值:

1). innodb_flush_log_at_trx_commit = 1:

每次事务提交时都会将日志刷新到磁盘,确保了最高的持久性。这是默认值,提供了最高的数据安全性,但在高并发写入的场景下可能会对性能产生一定影响。

2). innodb_flush_log_at_trx_commit = 2:

日志写入到操作系统的缓存(log buffer),并每秒刷写到磁盘。这种设置可能会有少量数据丢失的风险,但在某些高并发的场景下可以提高性能。

3). innodb_flush_log_at_trx_commit = 0:

日志写入到操作系统的缓存(log buffer),并每次检查点时刷写到磁盘。这种设置可能会有更多的数据丢失风险,但在某些特定的应用场景下,如大量写入且对数据的实时性要求不高的场景下,可以提高性能。

如何配置这个参数取决于你的业务需求和系统性能要求。如果你对数据的安全性有很高的要求,建议选择默认值1。如果你的系统写入量很大,且对数据实时性的要求不是特别高,可以考虑使用值2或0来提高性能。但需要注意的是,选择较低的值可能会增加数据丢失的风险。

配置方法很简单,你可以在MySQL的配置文件(如my.cnf或my.ini)中进行设置,或者在MySQL运行时使用SET GLOBAL命令进行动态调整。例如,如果你想将innodb_flush_log_at_trx_commit设置为2,你可以在配置文件中添加或修改以下行:

[mysqld]  innodb_flush_log_at_trx_commit = 2

或者,如果你只是想临时更改这个设置(直到下次MySQL重启),你可以执行以下SQL命令:

SET GLOBAL innodb_flush_log_at_trx_commit = 2;

请注意,更改任何数据库配置都可能对系统的稳定性和性能产生影响,因此在进行任何更改之前,建议先在测试环境中验证其效果。

三、binlog详解

binlog是MySQL服务器层的日志,用于记录所有更改数据或可能更改数据的SQL语句。它主要用于数据复制和恢复操作。【一致性:C】

1. 记录格式:

  • binlog支持多种记录格式,如STATEMENT、ROW和MIXED。不同的格式有不同的优缺点,需要根据实际场景选择合适的格式。

2. 写入机制:

  • 当执行一个可能修改数据的SQL语句时,MySQL服务器会将其记录到binlog中。

  • binlog的写入是同步的,即写入操作完成后才会返回给客户端。

3. 刷盘时机:

  • 在事务提交时,为了保证数据的持久性,会将binlog写入磁盘。

  • 与redo log不同,binlog的写入是同步的,即写入磁盘后才能返回给客户端。

4. 日志记录文件组和流程:

  • binlog通常由多个文件组成,当一个文件写满后,会自动切换到下一个文件继续写入。

  • 记录流程包括解析SQL语句、生成事件对象、将事件对象写入binlog缓冲区、最后将事件对象写入磁盘文件。

5. binlog的作用:

  • 复制:MySQL的主从复制就是依赖于binlog来实现的。主服务器上的binlog会被从服务器读取并执行,从而实现数据的同步。

  • 数据恢复:如果MySQL服务器发生了数据丢失或损坏,可以通过binlog中的事件来恢复数据到某个特定的时间点。

  • 审计:在某些场景下,binlog也可以用于审计目的,因为它记录了所有的修改操作。

6. binlog的三种格式:

  • ROW:基于行的复制(row-based replication, RBR),每一条会修改数据的SQL语句都会记录为每一行的变化。优点是不需要记录SQL语句上下文信息,不会产生某些特定情况下的主从数据不一致问题。缺点是有可能会产生大量的日志,尤其是修改大量数据的时候。

  • STATEMENT:基于语句的复制(statement-based replication, SBR),每一条会修改数据的SQL语句都会记录在binlog中。优点是不需要记录每一行的变化,减少了binlog日志量,节约了IO,节约了存储空间。缺点是由于记录的只是执行语句,为了保证这些语句在slave上正确运行,还必须记录每条语句在执行时的一些相关信息,例如当前的时间戳、执行的线程ID等。另外,如果SQL语句中包含了一些函数,可能会出现执行结果不一致的情况。

  • MIXED:混合复制(mixed-based replication, MBR),是以上两种格式的混合使用。MySQL会根据执行的SQL语句的类型和系统变量的设置自动选择使用STATEMENT还是ROW格式进行记录。

7. binlog的配置:

要启用binlog,你需要在MySQL的配置文件(如my.cnf或my.ini)中设置log_bin选项,并指定binlog的存储路径和文件名前缀。例如:​​​​​​​

[mysqld]  log_bin = /var/log/mysql/mysql-bin  server_id = 1

此外,还可以通过设置binlog_format来指定binlog的格式。

8. binlog数据恢复

使用MySQL的binlog进行数据恢复是一种可靠的方法,特别是当数据丢失或损坏时。以下是使用binlog进行数据恢复的基本步骤:

1). 确定数据丢失的时间点

首先,你需要确定数据丢失或损坏的大致时间点。这通常是通过检查备份、系统日志或询问相关人员来完成的。

2). 找到对应的binlog文件

根据确定的时间点,找到包含该时间点之前所有事件的binlog文件。binlog文件通常位于MySQL服务器配置的目录中,文件名包含了一个时间戳,可以帮助你识别文件。

3). 使用mysqlbinlog工具查看binlog内容

使用mysqlbinlog工具可以查看binlog文件的内容。这个工具可以将binlog文件转换为可读的格式,方便你查看其中的事件。

-- bash

 mysqlbinlog /path/to/binlog-file > output.txt

这将把binlog文件的内容输出到output.txt文件中。你可以使用文本编辑器打开这个文件,查找你感兴趣的事件。

4). 确定恢复的位置

在output.txt文件中,找到数据丢失之前的最后一个完整事务的位置。这个位置可以通过查看文件中的GTID、COMMIT等标识来确定。

5). 使用mysqlbinlog提取恢复所需的事件

使用mysqlbinlog工具的--start-position和--stop-position选项,提取从数据丢失之前的最后一个完整事务到数据丢失之前的时间点之间的所有事件。


-- bash

 mysqlbinlog --start-position=YOUR_START_POSITION --stop-position=YOUR_STOP_POSITION /path/to/binlog-file > recovery-events.sql

​​​​​​​

这将生成一个包含恢复所需事件的SQL文件recovery-events.sql。

6). 应用恢复事件

在确保备份了当前数据库状态之后,登录到MySQL服务器,并使用mysql客户端执行recovery-events.sql文件中的SQL语句。

-- bash

 mysql -u your_username -p your_database < recovery-events.sql 

这将把提取的事件应用到数据库中,恢复数据到丢失之前的状态。

注意事项:

  • 备份:在进行任何恢复操作之前,确保备份了当前的数据库状态,以防万一操作出现问题。

  • 测试:在正式恢复之前,最好在一个测试环境中进行恢复操作,以确保提取的事件是正确的,并且恢复过程不会引入新的问题。

  • binlog的完整性:确保在数据丢失之前没有删除或修改过binlog文件,否则恢复可能不完整或失败。

  • 权限:执行恢复操作时,确保使用的MySQL用户具有足够的权限来执行所需的SQL语句。

通过仔细操作和使用binlog,可以有效地恢复丢失的数据,并保持数据库的完整性和一致性。

四、Undo Log详解

MySQL 的 undo log 是 InnoDB 存储引擎用于保证事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),即 ACID 特性的关键组件之一。undo log 主要用于记录数据在修改前的状态,以便在事务回滚或发生系统故障时能够恢复到原始状态。【原子性:A】

1. undo log 的作用:

  • 事务回滚:当事务执行失败或显式地回滚时,InnoDB 可以利用 undo log 中的信息来撤销事务所做的修改,将数据恢复到事务开始之前的状态。

  • MVCC (多版本并发控制):undo log 也是实现 MVCC 的关键。通过保存数据的历史版本,多个事务可以并发地读取同一行数据而不会相互干扰。每个事务都可以看到一个一致的数据快照,即使其他事务正在修改数据。

  • 故障恢复:在系统崩溃或其他故障情况下,undo log 可以用于恢复数据到一致的状态。

2. undo log 的类型:

InnoDB 的 undo log 分为两种类型:

  • insert undo log:用于记录 INSERT 操作产生的 undo 日志,当事务提交后,该 undo 日志可以被立即删除,不需要进行 purge 操作。

  • update undo log:记录 UPDATE 或 DELETE 操作产生的 undo 日志,需要在事务提交后保留一段时间,以支持 MVCC。这些日志在不再需要时会通过 purge 操作来清理。

3. undo log 的存储:

undo log 可以存储在两个位置:

  • undo tablespace:这是默认的存储位置,可以配置为多个文件,以分散 I/O 负载。

  • 系统表空间:在某些配置中,undo log 也可以存储在 InnoDB 的系统表空间中。

4. undo log 的管理:

InnoDB 有一个后台进程来异步地清理不再需要的 undo log,这个过程称为 purge。purge 操作会释放不再需要的 undo log 所占用的空间,并更新系统元数据以反映这些变化。

5. 注意事项:

  • undo log 的大小和管理对于数据库的性能和存储效率有重要影响。如果 undo log 过大或管理不当,可能会导致性能下降或存储空间不足。

  • 在某些情况下,如大量的小事务或长时间运行的事务,undo log 可能会快速增长,需要密切监控和管理。

五、两阶段提交 2PC

MySQL中的两阶段提交(Two-Phase Commit,简称2PC)是一种确保分布式事务原子性的协议。它涉及到多个参与者和一个协调者,通常用于数据库复制或分布式系统中,以确保所有参与者都成功提交或回滚事务。

1. 两阶段提交的步骤:

1). 准备阶段(Prepare Phase):

  • 协调者向所有参与者发送准备提交请求。

  • 每个参与者执行本地事务操作,但不提交,而是记录必要的恢复信息(例如,undo log),并准备提交。

  • 如果参与者能够成功执行本地操作,则它向协调者发送“准备成功”的响应;否则,发送“准备失败”的响应。

2). 提交阶段(Commit Phase):

  • 根据准备阶段的响应,协调者决定是提交还是中止事务。

  • 如果所有参与者都准备成功,协调者向所有参与者发送提交请求。

  • 参与者提交本地事务,并释放锁定的资源。

  • 如果任何一个参与者在准备阶段失败,或者协调者在提交阶段无法与某个参与者通信,则协调者会向所有参与者发送中止请求。

  • 收到中止请求的参与者会回滚本地事务,并释放锁定的资源。

2. 优缺点:

1). 优点:

  • 确保分布式事务的原子性。

  • 相对简单易懂。

2). 缺点:

  • 阻塞问题:如果在准备阶段后,协调者崩溃或无法继续执行,参与者会无限期地等待。

  • 单点故障:协调者是整个系统的瓶颈和潜在的单点故障。

  • 性能问题:由于需要等待所有参与者响应,可能会导致性能瓶颈。

3. 改进与替代方案:

为了解决两阶段提交的一些缺点,出现了多种改进和替代方案,如三阶段提交(Three-Phase Commit,简称3PC)、分布式事务的补偿机制(如分布式事务框架Seata),以及基于分布式锁的解决方案等。

在MySQL的复制中,通常使用半同步复制(semi-synchronous replication)来确保数据在至少一个从库上持久化后才认为写操作成功,这也是一种保证数据一致性的机制,但不同于两阶段提交。

总的来说,两阶段提交是分布式事务中保证原子性的重要协议,但在实际应用中,需要根据具体场景和需求选择合适的方案。

结语

通过深入了解MySQL的redo log、bin log和undo log这三大日志,我们可以更好地理解MySQL的数据恢复、事务处理和数据复制等核心机制。在实际应用中,我们需要根据业务需求和系统性能要求合理配置这些日志的参数和策略,以确保数据库的稳定性和可靠性。同时,也需要关注日志的维护和管理,定期备份和清理日志文件,避免日志过多占用磁盘空间或影响系统性能。

图片

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

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

相关文章

代码随想录Day 47|Leetcode|Python|392.判断子序列 ● 115.不同的子序列

392.判断子序列 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的…

springboot房屋租赁系统

摘要 房屋租赁系统&#xff1b;为用户提供了一个房屋租赁系统平台&#xff0c;方便管理员查看及维护&#xff0c;并且可以通过需求进行设备信息内容的编辑及维护等&#xff1b;对于用户而言&#xff0c;可以随时进行查看房屋信息和合同信息&#xff0c;并且可以进行报修、评价…

熟知Linux目录结构,配置网络(超级详细……)

一、目录结构 1.1目录的特点 Windows和Linux win&#xff1a;是一个多根系统 Linux&#xff1a;只有一个根是一个单根系统 1.2各个目录存储的内容 /root&#xff1a;Linux中管理员用户的家目录 /home&#xff1a;Linux中存储普通用户的家目录例&#xff1a;tom用户的家目录就…

matlab使用教程(71)—控制坐标区布局

1.与位置相关的属性和函数 有几个属性和函数可用于获取和设置坐标区的大小与位置。下表摘要显示了这些属性和函数。 函数或属性描述 OuterPosition 属性 使用此属性可以查询或更改坐标区的外边界&#xff0c;包括标题、标签和边距。要更改外边界&#xff0c;请将此属性指定为…

Android 异常开机半屏重启代码分析

Android 的稳定性是 Android 性能的一个重要指标&#xff0c;它也是 App 质量构建体系中最基本和最关键的一环&#xff1b;如果应用经常崩溃&#xff0c;或者关键功能不可用&#xff0c;那显然会对我们的留存产生重大影响所以为了保障应用的稳定性&#xff0c;我们首先应该树立…

SpringBoot(一)之初始化

SpringBoot(一)之初始化 文章目录 SpringBoot(一)之初始化SpringBoot框架 SpringBoot简化配置1. 创建SpringBoot项目关于初始化错误 2. SpringBoot项目结构主类pom.xml1. 关于spring-boot-starter-parent2. 关于spring-boot-starter-web3. 关于spring-boot-starter-test4. 关于…

Shopee、Lazada等平台怎么做测评?

最近有很多人咨询南哥跨境电商平台测评应该怎么做&#xff0c;今天我就针对东南亚站点&#xff0c;详细跟大家分享一下东南亚平台测评需要哪些资源 测评环境系统 不管做任何平台&#xff0c;首先你要有一个稳定的测评环境系统&#xff0c;测评环境系统的底层逻辑就是通过一台…

80%的产品经理被辞退不是因为能力,而是因为…

新手刚入门做产品经理&#xff0c;对产品经理的工作其实也是没有把握&#xff0c;这是对这份工作不够了解&#xff0c;不知道整个工作的流程&#xff0c;所以会感觉“没把握”&#xff0c;结果就是导致焦虑。 如果你硬着头皮做一遍&#xff0c;知道大概是怎么回事&#xff0c;…

Redis过期删除策略和内存淘汰策略有什么区别?

Redis过期删除策略和内存淘汰策略有什么区别&#xff1f; 前言过期删除策略如何设置过期时间&#xff1f;如何判定 key 已过期了&#xff1f;过期删除策略有哪些&#xff1f;Redis 过期删除策略是什么&#xff1f; 内存淘汰策略如何设置 Redis 最大运行内存&#xff1f;Redis 内…

电脑版的学浪课程下载方法

想在你的电脑上无限制地访问你最爱的学浪课程吗&#xff1f;现在&#xff0c;让我揭秘如何用几个简单步骤&#xff0c;轻松下载任何学浪课程到你的电脑&#xff0c;让学习不再受时间和地点的限制&#xff0c;随时随地都是你的课堂。 下载学浪视频的工具&#xff0c;我已经打包…

前端 JS 经典:数组去重万能方法

前言&#xff1a;只需要掌握这一个方法&#xff0c;就可以对有任何重复的数据数组&#xff0c;进行去重了。 可以自己思考下&#xff0c;怎么对以下对象数组去重&#xff1a; const arr [{ a: 1, b: 2 },{ b: 2, a: 1 },{ a: 1, b: 2, c: { a: 1, b: 2 } },{ b: 2, a: 1, c:…

数据中台管理系统原型

数据中台是一个通用性的基础平台&#xff0c;适用于各类行业场景&#xff0c;数据中台包含多元数据汇聚、数据标准化、数据开发、数据共享、数据智能、数据资产管理等功能&#xff0c;助力企业数字化转型。 数据汇聚 数据汇聚是将不同系统、不同类型的多元源数据汇聚至目标数据…

第二十届文博会中芬设计园分会场:发展新质生产力,释放文化创新活力

今年是中国&#xff08;深圳&#xff09;国际文化产业博览交易会&#xff08;以下简称“文博会”&#xff09;创办20周年&#xff0c;二十蝶变再启航&#xff0c;站在新的历史起点上&#xff0c;本届文博会将重点突出数字赋能、强化交易功能、激发和扩大文化消费、弘扬文化传承…

端午佳节,品尝食家巷传统面点与黄米粽子礼盒

端午佳节&#xff0c;品尝食家巷传统面点与黄米粽子礼盒 在这个端午节来临之际&#xff0c;食家巷倾情推出一款别具特色的端午礼盒&#xff0c;将甘肃的传统面点与地方特色黄米粽子完美融合&#xff0c;为您带来一场美味与传统的邂逅。 这款礼盒以甘肃传统面点一窝丝、油饼和烤…

立创EDA绘制PCB电路板

1、绘制好原理图后&#xff0c;点击设计---原理图转PCB&#xff0c;生成PCB文件 2、将元器件拖入电路板方框内&#xff0c;摆放布局并使用工具栏布线、放置过孔及丝印 3、然后顶层和底层铺铜 4、后面就可以生成制板文件发送嘉立创制板了。

干货教程【AI篇】| Topaz Video Enhance AI超好用的视频变清晰变流畅的AI工具,免费本地使用

关注文章底部公众号&#xff0c;回复关键词【tvea】即可获取Topaz Video Enhance AI。 一款非常好用的视频变清晰变流畅的AI工具&#xff0c;即提高视频的分辨率和FPS&#xff0c;亲测效果非常nice&#xff01;&#xff01; 免费&#xff01;免费&#xff01;免费&#xff01…

Google IO 2024有哪些看点呢?

有了 24 小时前 OpenAI 用 GPT-4o 带来的炸场之后&#xff0c;今年的 Google I/O 还未开始&#xff0c;似乎就被架在了一个相当尴尬的地位&#xff0c;即使每个人都知道 Google 将发布足够多的新 AI 内容&#xff0c;但有了 GPT-4o 的珠玉在前&#xff0c;即使是 Google 也不得…

笑铺日记:服装店看这3个数字,就知道赚不赚钱

明明店里每天人来人往&#xff0c;月底一算账&#xff0c;却发现没赚多少钱&#xff1f; 都说要数据分析&#xff0c;但是到底怎么做&#xff1f;这是每个老板都头疼不已的事情。 其实&#xff0c;服装店管好这3个数字&#xff0c;赚钱就不是事儿。 笑铺日记系统&#xff0c…

什么是等保测评?等保测评必须进行吗?

等保测评&#xff0c;全称为信息安全等级保护测评&#xff0c;是指对信息系统安全等级保护状况进行测试评估的活动。它是根据国家信息安全等级保护规范规定&#xff0c;由具有相应资质的测评机构&#xff0c;按照相关管理规范和技术标准进行的&#xff0c;目的是验证信息系统是…

深度学习技术之卷积神经网络

深度学习技术 卷积神经网络1. 导入需要的库2. 加载并显示两张图像2.1 加载图像2.2 创建子图2.3 打印图像形状2.4 打印合并后的图像数组的形状 3. 卷积层3.1 定义变量3.1.1 卷积核的大小&#xff08;u&#xff09;3.1.2 滑动步长&#xff08;s&#xff09;3.1.3 输出特征图的数量…