深入理解 PostgreSQL 的架构和内部工作原理

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁
🦄 个人主页——libin9iOak的博客🎐
🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

文章目录

  • 深入理解 PostgreSQL 的架构和内部工作原理
    • 摘要:
    • 1. 引言
    • 2. 概述 PostgreSQL 架构
      • 客户端与服务器端交互
      • 查询处理器
      • 执行计划生成
      • 存储引擎
      • 事务管理与并发控制
      • 缓存管理
      • 后台进程
    • 3. 连接和会话管理
      • 连接到 PostgreSQL 服务器
      • 认证和权限验证
      • 建立会话
      • 连接池和连接限制
      • 4. 查询处理与执行
      • 解析查询语句
      • 查询优化器
      • 执行计划生成
      • 查询执行
      • 5. 事务管理与并发控制
      • 事务的 ACID 特性
      • 多版本并发控制(MVCC)
      • 处理高并发读写操作
    • 6. 存储引擎与物理存储结构
      • 表空间
      • 表的组织和存储
      • 索引
      • 数据文件
      • 高级存储技术
    • 7. 日志与恢复
      • Write-Ahead Logging(WAL)
      • 归档日志
      • 数据恢复和故障恢复
    • 8. 扩展性与高可用性
      • 读写分离
      • 分片
      • 流复制和逻辑复制
      • 自动故障转移
    • 9. 性能调优与监控
      • 性能调优原则与技巧
      • 性能监控工具与技术
    • 10. 结论
    • 11. 参考文献
  • 原创声明

在这里插入图片描述

深入理解 PostgreSQL 的架构和内部工作原理

摘要:

在各个领域广泛应用的 PostgreSQL 是一个强大的开源关系型数据库管理系统。本博客的主题是深入了解 PostgreSQL 的架构和内部工作原理,旨在帮助读者更好地理解其工作机制,从而优化和管理 PostgreSQL 数据库。

1. 引言

PostgreSQL,作为一款功能丰富、可靠稳定的数据库管理系统,已经被广泛应用于众多项目和企业中。为了深入理解 PostgreSQL 的内部工作原理,我们将介绍其整体架构以及客户端、服务器端和后台进程之间的交互关系。

2. 概述 PostgreSQL 架构

PostgreSQL是一个功能强大的开源关系型数据库管理系统,其架构包括多个组件,每个组件在数据库系统中发挥着关键的作用。了解 PostgreSQL 的整体架构对于深入理解其内部工作原理至关重要。

客户端与服务器端交互

在 PostgreSQL 中,客户端通过网络连接到服务器端来执行数据库操作。客户端可以是各种各样的应用程序,如Web应用、命令行工具或者图形界面应用。服务器端接收来自客户端的请求,并根据请求的内容执行相应的数据库操作。

查询处理器

当客户端发送 SQL 查询到服务器端时,查询处理器负责解析和处理这些查询。首先,它会对查询进行语法解析,确保查询语句的合法性。然后,查询处理器会根据查询的语义,生成执行计划。

执行计划生成

查询优化器是生成执行计划的关键组件。优化器会分析查询,考虑多种执行方案,并选择最优的执行计划。优化器的目标是通过选择最佳执行计划来提高查询的性能和效率。

存储引擎

执行计划被传递给存储引擎,存储引擎负责实际执行查询并从磁盘或内存中读取数据。PostgreSQL支持多种存储引擎,这使得它具备了较高的灵活性和扩展性。

事务管理与并发控制

PostgreSQL严格遵循ACID(原子性、一致性、隔离性和持久性)事务特性。事务管理器负责处理事务的提交和回滚,并确保多个并发事务之间的隔离性和一致性。

缓存管理

为了提高数据库查询的性能,PostgreSQL使用了缓存机制。它会将频繁使用的数据和查询结果存储在内存中,以便快速响应客户端的请求。

后台进程

除了上述关键组件之外,PostgreSQL还有一些重要的后台进程,用于执行诸如自动化清理、日志管理、并发控制等任务,以保证数据库的正常运行。

在后续的章节中,我们将详细探讨每个组件的工作原理,并了解 PostgreSQL 如何通过这些组件实现其强大的功能和高性能。通过深入理解 PostgreSQL 架构,您将能够更好地管理和优化您的 PostgreSQL 数据库。

3. 连接和会话管理

连接和会话管理是数据库操作中至关重要的环节。在本节中,我们将详细解释客户端如何连接到 PostgreSQL 服务器并建立会话,以及如何优化数据库的性能和资源利用率。

连接到 PostgreSQL 服务器

当客户端应用程序希望与 PostgreSQL 数据库进行交互时,它需要通过网络连接到 PostgreSQL 服务器。客户端会提供服务器的主机名(或 IP 地址)和端口号,以便建立连接。

认证和权限验证

一旦客户端与 PostgreSQL 服务器建立连接,服务器会要求客户端进行身份验证。这是为了确保只有授权的用户能够访问数据库。PostgreSQL 支持多种身份验证方法,包括基于密码的身份验证、证书认证等。

建立会话

在通过身份验证后,客户端与 PostgreSQL 服务器建立会话。会话是一种持久的连接,它允许客户端在多个查询之间保持状态。在会话期间,客户端可以执行多个查询,并在每个查询之间共享数据和状态。

连接池和连接限制

为了优化数据库的性能和资源利用率,通常会使用连接池技术。连接池允许多个客户端共享一组预先建立的数据库连接,从而避免了频繁地创建和销毁连接的开销。此外,为了控制数据库服务器的负载,可以对连接数进行限制,以防止过多的连接导致性能下降。

4. 查询处理与执行

一旦客户端与 PostgreSQL 建立会话,它可以发送 SQL 查询到服务器端以执行数据库操作。在本节中,我们将深入探讨查询处理的过程,以及如何优化查询执行,提高数据库性能。

解析查询语句

当服务器接收到客户端发送的 SQL 查询语句时,首先要对查询进行语法解析。解析器将查询语句转换为内部数据结构,以便数据库系统理解查询的含义。

查询优化器

一旦查询被解析,查询优化器便会介入工作。查询优化器的目标是选择最佳的执行计划,以最高效地执行查询。优化器考虑多种执行策略,并评估每种策略的成本,然后选择最优的执行计划。

执行计划生成

在优化器选择执行计划后,执行计划生成器将根据优化器的选择,生成实际执行查询的计划。执行计划是一组操作步骤,描述了数据库系统如何从存储中获取数据,并对数据进行处理,以产生最终的查询结果。

查询执行

最后,生成的执行计划会被传递给存储引擎,存储引擎会负责实际执行查询并返回结果给客户端。存储引擎会根据执行计划从磁盘或内存中读取数据,并执行各种数据库操作,如过滤、排序和聚合等。

在深入理解查询处理和执行的过程后,我们可以通过优化查询语句和索引设计等手段,提高数据库的性能和响应速度,从而更好地满足应用程序的需求。

5. 事务管理与并发控制

事务管理和并发控制是 PostgreSQL 强大功能的基础。在本节中,我们将详细讨论 PostgreSQL 是如何实现事务的 ACID 特性,并解释多版本并发控制(MVCC)的原理。

事务的 ACID 特性

PostgreSQL 严格遵循事务的 ACID 特性:

  • 原子性(Atomicity):事务被视为一个不可分割的操作单元,要么全部执行成功,要么全部失败回滚,保证数据库的一致性。
  • 一致性(Consistency):事务将数据库从一个一致性状态转移到另一个一致性状态,不会破坏数据完整性。
  • 隔离性(Isolation):事务的执行是相互隔离的,一个事务的执行不会影响其他事务的执行结果。
  • 持久性(Durability):一旦事务提交,其修改将永久保存在数据库中,即使发生系统故障也不会丢失。

多版本并发控制(MVCC)

为了实现高并发性能,PostgreSQL 使用了多版本并发控制(MVCC)机制。MVCC 允许多个事务并发执行,每个事务都能看到自己的数据库快照,从而实现了高度的隔离性。当事务需要修改数据时,它会创建数据的新版本,而不是直接修改原始数据,这保证了不同事务之间的隔离性和一致性。

处理高并发读写操作

MVCC 的使用使得 PostgreSQL 能够高效处理高并发读写操作。多个读操作可以同时进行,而不会相互干扰。对于写操作,PostgreSQL 使用锁和版本控制来确保数据的一致性和完整性。

通过深入理解事务管理和并发控制的原理,数据库管理员和开发人员可以更好地设计应用程序的数据库操作,避免冲突和数据错误,从而保证数据库系统的稳定和可靠性。

6. 存储引擎与物理存储结构

PostgreSQL的存储引擎对于优化数据库性能至关重要。在本节中,我们将深入探讨存储引擎以及物理存储结构的组织方式,包括表空间、表、索引和数据文件,同时介绍一些高级存储技术,如表分区和页压缩。

表空间

表空间是 PostgreSQL 中用于组织数据文件的逻辑容器。每个表空间可以包含一个或多个数据文件,这些数据文件可以位于不同的磁盘分区。通过合理规划表空间,可以将不同的数据对象分别存放在不同的物理位置,实现数据的有效管理和优化存储性能。

表的组织和存储

在 PostgreSQL 中,表是数据的逻辑组织单元,用于存储实际的数据记录。表的数据可以存储在多个数据文件中,这些数据文件由表空间管理。表的组织方式对数据库性能影响很大,因此选择合适的表结构和索引设计至关重要。

索引

索引是加快数据检索速度的重要手段。PostgreSQL支持多种类型的索引,如B树索引、哈希索引和GIN(Generalized Inverted Index)等。合理创建索引可以大大提高查询性能,但过多的索引也会增加数据维护的开销,因此需要根据实际需求进行权衡和优化。

数据文件

PostgreSQL使用数据文件来存储表中的数据。每个表的数据可以分布在多个数据文件中,每个数据文件通常对应一个表空间。通过将表数据划分到多个数据文件中,可以实现数据的并行读写,提高数据库的扩展性和性能。

高级存储技术

为了更好地管理数据和优化存储,PostgreSQL提供了一些高级存储技术。其中,表分区是一种将大表拆分为多个子表的方法,可以提高查询性能和数据维护的效率。另外,页压缩是一种压缩数据文件中的数据页,减少存储空间占用,但同时会增加数据读取时的CPU开销。

通过了解存储引擎和物理存储结构的组织方式,数据库管理员和开发人员可以更好地规划数据库的存储布局和索引设计,以提高数据库的性能和可维护性。

7. 日志与恢复

日志机制是确保数据库数据安全性和故障恢复的重要手段。在本节中,我们将解释 PostgreSQL 中的日志机制,并讨论 Write-Ahead Logging(WAL)和归档日志的作用,以及如何使用日志来实现数据恢复和故障恢复。

Write-Ahead Logging(WAL)

WAL是 PostgreSQL 中的一种重要日志技术。在每次数据修改之前,PostgreSQL会先将修改操作记录到WAL中,然后再进行实际的数据修改。这确保了在发生故障时,数据库可以通过重放WAL日志来恢复数据,从而保证数据的一致性和完整性。

归档日志

为了进一步保障数据的安全性,PostgreSQL还支持归档日志。归档日志是WAL日志的备份,可以将WAL日志复制到远程存储位置,从而防止数据丢失。在故障恢复时,可以使用归档日志进行数据恢复。

数据恢复和故障恢复

当数据库发生故障时,如硬件故障、崩溃或意外关闭,PostgreSQL可以使用WAL日志和归档日志进行数据恢复。通过回放WAL日志和应用归档日志,数据库可以将数据恢复到最近的一致状态,保障数据的完整性。

了解日志机制和故障恢复流程,对数据库管理员至关重要。通过合理配置日志设置和定期备份归档日志,可以最大程度地降低数据丢失的风险,并确保数据库的高可用性和稳定性。

8. 扩展性与高可用性

随着数据量的增长,扩展性和高可用性成为了数据库系统设计的重要考虑因素。在本节中,我们将介绍 PostgreSQL 的扩展性策略,包括读写分离和分片等方法,并提供实现高可用性的选项,如流复制、逻辑复制和自动故障转移等。

读写分离

为了应对高并发读写请求,PostgreSQL支持读写分离技术。通过将读操作和写操作分离到不同的数据库实例,可以减轻主数据库的负载,并提高读取性能。

分片

当单个数据库无法满足数据存储和查询的需求时,可以考虑使用分片技术。分片将大表拆分为多个子表,并将这些子表分布在不同的数据库节点上,从而实现数据的横向扩展。

流复制和逻辑复制

为了实现高可用性,PostgreSQL支持流复制和逻辑复制。流复制是将数据实时复制到多个备用数据库节点,从而在主数据库发生故障时,自动切换到备用节点。逻辑复制

则可以选择性地复制特定数据表或数据集合,提供更灵活的数据复制和同步选项。

自动故障转移

为了确保数据库系统的高可用性,自动故障转移是一种重要的实践方法。通过使用自动故障转移工具,如Patroni或Pacemaker,可以实现在主数据库发生故障时,自动将备用节点提升为主节点,从而实现数据库的自动切换和恢复。

通过合理规划和选择扩展性和高可用性的策略,数据库管理员可以确保 PostgreSQL 数据库能够随着业务需求的增长而持续稳定地运行。同时,高可用性的设计还能最大程度地减少数据库系统的宕机时间,保障数据的可靠性和一致性。

9. 性能调优与监控

性能调优是确保 PostgreSQL 数据库高效运行的关键步骤。在本节中,我们将提供一些性能调优的一般原则和技巧,帮助您优化数据库性能。同时,我们还将推荐一些常用的性能监控工具和技术,帮助管理员及时发现和解决性能问题。

性能调优原则与技巧

  1. 索引优化:合理创建索引可以显著提高查询性能。评估数据库的查询模式,选择适当的字段作为索引,并避免过多或不必要的索引,以减少维护开销。

  2. 查询优化:审查查询语句,确保使用高效的查询语法和 JOIN 操作,避免不必要的子查询或全表扫描。

  3. 内存管理:增加 PostgreSQL 的共享缓存大小,充分利用系统的内存资源,减少磁盘 I/O,提高查询性能。

  4. 参数调整:根据实际硬件和工作负载,调整 PostgreSQL 的配置参数,如并发连接数、查询缓存等,以获得最佳性能。

  5. 数据分区:对大型表进行分区,将数据分散到不同的表空间,提高查询效率和数据维护的灵活性。

性能监控工具与技术

  1. pg_stat_statements:这个扩展可以监控查询的执行情况,包括执行次数、平均执行时间等,帮助识别慢查询。

  2. pg_stat_activity:这个视图可以查看当前活跃的数据库会话和查询信息,帮助管理员及时发现并解决连接问题。

  3. pgBadger:这是一个用于解析 PostgreSQL 日志文件并生成报告的工具,可以帮助管理员追踪数据库的性能情况。

  4. pg_top:这是一个类似于Unix的top命令的工具,可以实时监控 PostgreSQL 数据库的活动情况。

  5. PostgreSQL自带日志:开启 PostgreSQL 的日志记录功能,可以记录数据库的查询和错误信息,帮助管理员进行故障排查和性能分析。

性能监控是 PostgreSQL 数据库维护的重要组成部分。通过使用这些工具和技术,管理员可以及时了解数据库的性能表现,发现潜在的性能问题,并进行相应的优化和调整。

10. 结论

在本博客中,我们深入理解了 PostgreSQL 的架构和内部工作原理。从概述 PostgreSQL 架构到连接和会话管理、查询处理与执行、事务管理与并发控制、存储引擎与物理存储结构、日志与恢复、扩展性与高可用性,每个主题都为我们揭示了 PostgreSQL 数据库的重要特性和机制。

深入理解这些原理有助于管理员更好地管理和优化 PostgreSQL 数据库,确保其高效稳定地运行。通过遵循性能调优原则和技巧,合理配置数据库参数,优化查询和索引,以及使用性能监控工具,管理员可以保持对数据库性能的持续关注,及时发现和解决性能问题,从而使 PostgreSQL 数据库成为高效可靠的数据存储平台。

希望本博客对您深入了解 PostgreSQL 并优化数据库性能有所帮助。继续学习和实践,将能够进一步掌握 PostgreSQL 的高级特性,并在实际应用中发挥其强大功能。祝您在 PostgreSQL 的学习和应用中取得成功!

11. 参考文献

在本博客的写作过程中,我们参考了以下相关书籍、文章和官方文档链接,推荐给读者进一步深入学习:

  • PostgreSQL官方文档
  • 《PostgreSQL 9 高级内核》- 刘铁岩
  • 《PostgreSQL 权威指南》- 安格尔 (Angulo)
  • 《PostgreSQL技术内幕》- 张文博

希望这篇博客能够帮助您更好地理解 PostgreSQL 的架构和内部工作原理,并在实践中应用这些知识来优化和管理您的数据库系统。祝您学习愉快!

原创声明

======= ·

  • 原创作者: 猫头虎

作者wx: [ libin9iOak ]


本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。

作者保证信息真实可靠,但不对准确性和完整性承担责任

未经许可,禁止商业用途。

如有疑问或建议,请联系作者。

感谢您的支持与尊重。

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

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

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

相关文章

FPGA配置文件从串并模式下载

FPGA配置文件的下载模式有5种: 主串模式(master serial)从串模式(slave serial)主并模式(master selectMAP)从并模式(slave selectMAP)JTAG模式 其中,JTAG模…

信捷PLC RC低通滤波器(C语言实现)

PLC信号处理系列之RC低通滤波器算法详细介绍请参考下面文章: PLC信号处理系列之一阶低通(RC)滤波器算法_plc滤波算法程序_RXXW_Dor的博客-CSDN博客1、先看看RC滤波的优缺点 优点:采用数字滤波算法来实现动态的RC滤波,则能很好的克服模拟滤波器的缺点; 1、在模拟常数要求较…

什么小程序需要商家自营相关类目?

1、百货:小程序主体公司综合零售商,在线售卖多种日用品,需补充商家自营-百货类目。预包装食品定义: 预包装食品,指预先定量包装或者制作在包装材料和容器中的食品;包括预先定量包装以及预先定量制作在包装…

配置右键点击文件夹通过IDEA打开项目

0、 前言 你是不是每次打开idea项目时,都需要走一遍这样的流程: 1、先启动idea 2、然后手动选择项目路径 3、打开项目 于是在打开项目的路上就耗费了大量的时间。 这篇文章会教你通过配置,让项目可以直接通过右键打开,大大提升项…

【JAVA】云HIS系统功能菜单知识(二)

随着医疗信息化和互联网技术的不断发展,云HIS在大数据管理和应用的优势日益凸显。对于医疗机构而言,云HIS平台可以帮助其实现更高效的医疗服务管理,并提高医疗服务的整体水平和效率。 一、系统管理 1.医院信息 基本信息、法人代表、主要负责…

【数据结构】链表是否有环相关问题

文章目录 快指针走3、4、5步甚至更多可以吗为什么快慢指针一定在入口点相遇![在这里插入图片描述](https://img-blog.csdnimg.cn/ba346dbc9fee425dbb895ae2962e99ce.png) 快指针走3、4、5步甚至更多可以吗 部分情况下可以。 如果这样,相对(追及&#xf…

Linux -- 进阶 自动挂载服务 ( autofs ) 介绍及安装 主配置文件分析

背景引入 : 针对于 挂载 , 大家有没有思考过一个问题,如果我们需要挂载的文件或访问的远程数据甚至只是挂载一些设备,如果太多的话,数量很大的话,那 光每次挂载 敲的 mount 命令,都得敲很多遍…

【晓风残月】byte,short,int,long——八种基本类型

文章目录 前言废话不多说,总结下今天的成果以及踩的坑 一、第一个坑【数据丢失】二、第二个坑【byte集合无法转换byte数组】三、第三个坑【Byte[]转byte[]】四、第四个坑【16进制转byte】总结快一年没写博客了,貌似都不记得过去的自己了向前看&#xff1…

DASCTF 2023 0X401七月暑期挑战赛RE题解

比赛期间没有什么时间,赛后做的题。 TCP 这题最难,耗时最久,好像做出来的人不多。 程序开始有个初始化随机数的过程,数据写入qword_5060开始的48个字节。 这里是主函数,连接到服务器以后,先接收32个字节…

spring-IOC

IOC容器 简介 IoC(Inversion of Control)控制反转,是一种基于面向对象编程法则的设计思想,它设计出的程序具有松耦合、更优良的特点。 IoC容器是Spring框架中重要的核心组件之一,贯穿了Spring从出生到成长的整个过程,Spring通过I…

K8S下如何搭建eureka集群

背景 传统应用上云,基于传统应用需要考虑上云的方案和改造成本,这也是传统应用上云过程中的难点,本篇介绍3台eureka搭建的方案。 方案一 此方案借助了K8S中Service的一些功能。 这种方案是传统方案的简单迁移版本,比较易于理解…

19.主题时钟

主题时钟 html部分 <div class"btn">黑色</div><div class"clock-container"><div class"time">21</div><div class"date">21</div><div class"clock"><div class&qu…

MOS,PCB如何添加散热孔、过孔

一、什么是 PCB 散热孔&#xff1f; 散热孔是利用贯通PCB板的通道&#xff08;过孔&#xff09;使热量传导到背面来散热的手法&#xff0c;配置在发热体的正下方或尽可能靠近发热体。 散热孔是利用PCB板来提高表面贴装部件散热效果的一种方法&#xff0c;在结构上是在PCB板上…

IMU和视觉融合学习笔记

利用纯视觉信息进行位姿估计&#xff0c;对运动物体、光照干扰、场景纹理缺失等情况&#xff0c;定位效果不够鲁棒。当下&#xff0c;视觉与IMU融合(VI-SLAM&#xff09;逐渐成为常见的多传感器融合方式。视觉信息与IMU 数据进行融合&#xff0c;根据融合方式同样可分为基于滤波…

【《机器学习和深度学习:原理、算法、实战(使用Python和TensorFlow)》——以机器学习理论为基础并包含其在工业界的实践的一本书】

机器学习和深度学习已经成为从业人员在人工智能时代必备的技术&#xff0c;被广泛应用于图像识别、自然语言理解、推荐系统、语音识别等多个领域&#xff0c;并取得了丰硕的成果。目前&#xff0c;很多高校的人工智能、软件工程、计算机应用等专业均已开设了机器学习和深度学习…

「网络编程」传输层协议_ TCP协议学习_及原理深入理解(一)[万字详解]

「前言」文章内容大致是传输层协议&#xff0c;TCP协议讲解&#xff0c;续上篇UDP协议。 「归属专栏」网络编程 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、TCP协议介绍二、TCP协议2.1 解包与分用2.2 谈谈可靠性2.3 TCP的工作模式2.4 确认应答(ACK)机制2.5 16位序号与…

绘出「星辰大海」:华为云Astro轻应用新手指南-第二章

第2章 Astro轻应用奇遇——用鼠标「拖拽」的开发 不被编程所困&#xff0c;像玩拼图一样打造订购系统&#xff01; 今天&#xff0c;我们用鼠标拖拽的方式开发订餐应用。 读过本章&#xff0c;你可以同理开发出各异的订购小程序。 继续Astro轻应用旅行吧&#xff01; 第1站…

WebSocket笔记

1. websocket介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 HTTP协议和WebSocket协议对比&#xff1a; HTTP是短连接W…

【JavaWeb】Tomcat底层机制和Servlet运行原理

&#x1f384;欢迎来到dandelionl_的csdn博文&#xff0c;本文主要讲解Java web中Tomcat底层机制和Servlet的运行原理的相关知识&#x1f384; &#x1f308;我是dandelionl_&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关注一…

iNav开源代码之Filters

iNav开源代码之Filters 1. 源由2. 滤波器应用类型2.1 一般滤波2.1.1 pt1Filter2.1.2 pt2Filter2.1.3 pt3Filter2.1.4 biquadFilter2.2 kalman滤波2.3 动态gyro带通滤波2.3.1 dynamicGyroNotchFilters2.3.2 secondaryDynamicGyroNotchFilters 2.4 rpm滤波 3. 滤波器技术类型3.1 …