news 2026/9/8 3:18:08

PostgreSQL 17大版本升级实战:并行查询、WAL优化与平滑迁移指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PostgreSQL 17大版本升级实战:并行查询、WAL优化与平滑迁移指南

PostgreSQL 这两年的大版本更新,每一次都在性能、可扩展性和运维体验上释放了不少诚意,而这次被社区称为“多年来最大升级”的版本,更是把并行查询、写入性能、逻辑复制和 vacuum 等方面的能力整体抬了一个台阶。很多开发者在看到“最大升级”这种描述时,第一反应是“又要改语法?又要踩兼容坑?”,但实际上这次升级的核心思路非常清晰:不折腾应用层,不换语法范式,而是让数据库底层更快、更稳、更好管

本文不会只停留在“新特性清单”这种浅层介绍,而是围绕这次升级展开三部分内容:先讲清楚新版本的核心能力到底解决了什么问题,再给出一套从旧版本平滑升级的完整实操流程,最后梳理升级前后常见报错、性能回退和兼容性坑点。无论你是刚接触 PostgreSQL 的新手,还是正在维护生产库的 DBA 或后端开发者,这篇文章都能帮你建立一条清晰的学习和实践路径。

1. 背景:为什么说这次升级“很大”

1.1 PostgreSQL 的版本演进逻辑

PostgreSQL 的版本迭代策略一向比较克制。它不像某些商业数据库那样频繁发布大版本,而是把每一次大版本都当作一次“稳中求进”的积累。过去几个版本里,PostgreSQL 的重点分别放在:

  • 12 ~ 13 版本:索引与 vacuum 机制优化,B-tree 索引性能提升明显。
  • 14 版本:并发性能提升,连接管理、并行查询、分区表能力增强。
  • 15 版本:引入MERGE语法,逻辑复制支持行过滤和列过滤,pg_stat_statements等监控视图增强。
  • 16 版本:并行聚合、批量复制、pg_stat_io视图,逻辑复制支持从 standby 节点订阅。
  • 17 版本:vacuum 性能大幅优化、WAL 写入优化、并行查询进一步扩展、逻辑复制故障转移完善。

之所以这次被称作“多年来最大升级”,并不是因为某单一功能“炸裂”,而是因为这次更新同时触及了数据库最核心的几个底层模块:存储引擎、WAL 日志、查询计划器、复制机制、内存管理。换句话说,它不是加了一两个花哨功能,而是把过去几年积累的优化点集中落地,整体性能上限和运维稳定性都有明显改善。

1.2 它解决了什么问题

围绕 PostgreSQL 的常见痛点,这次升级重点回应了下面几类问题:

  • 高并发写入场景下 WAL 写入瓶颈。大量小事务插入时,WAL 写入锁竞争曾经是性能瓶颈之一,新版本对 WAL 写入路径做了优化,吞吐量提升明显。
  • vacuum 对业务的影响。旧版本中,vacuum 的 I/O 开销和索引清理效率在超大表上经常让人头疼,新版本通过更高效的索引遍历方式,大幅减少了 vacuum 时间。
  • 并行查询覆盖范围不足。此前并行查询在部分场景(如EXISTSIN子查询、聚集计算)中无法有效启用,新版本扩大了并行计划的适用范围。
  • 逻辑复制的高可用短板。旧版本逻辑复制在订阅端故障后恢复较慢,新版本完善了冲突检测和故障转移能力。
  • 大数据量分区表的维护。分区表在数据加载、分区裁剪、索引维护等方面有了更多优化。

1.3 应用场景与学习价值

这次升级对以下场景尤其有价值:

场景受益点
在线交易系统WAL 写入优化,高并发小事务吞吐量提升
数据仓库 / OLAP并行查询能力扩展,聚合、连接类 SQL 更快
物联网 / 时序数据批量插入性能优化,分区表维护成本降低
多活/灾备架构逻辑复制增强,订阅端切换更平滑
长期运行的大库vacuum 和索引维护时间缩短,业务抖动减少

对开发者来说,即使短期内不升级生产环境,也值得提前了解新版本的能力变化,因为这会直接影响未来数据库选型、SQL 写法优化方向、以及高可用架构设计。

2. 环境准备与版本选型

在动手升级或测试新版本之前,建议先明确自己的环境。本文示例以常见 Linux 环境为准,重点演示升级路径和配置思路,具体版本号请根据实际发布情况调整。

2.1 建议环境

项目建议
操作系统CentOS 7.9+ / Ubuntu 20.04+ / Debian 11+
内存至少 4GB,生产环境建议 16GB 以上
磁盘SSD 为佳,预留至少 2 倍数据量的空间用于升级备份
数据库版本本文以 PostgreSQL 16 升级到 17 为例,其他版本思路相同
连接工具psql、pgAdmin 4、DBeaver 均可

如果你还不确定目前线上版本,可以通过下面命令查看:

SELECT version();

或者使用命令行:

psql --version

2.2 升级前必须确认的事

  1. 小版本也要注意。PostgreSQL 的大版本升级指的是 16.x → 17.x 这种跨大版本升级,不能通过yum update直接完成,需要使用pg_upgrade或逻辑导出导入。
  2. 备份是硬性要求。无论你使用哪种升级方式,都必须先做完整备份。
  3. 测试环境先行。不要直接在产生环境上升级,先在测试环境完整演练一遍。
  4. 扩展兼容性。如果使用了第三方扩展(如postgistimescaledbcitus),需要提前确认这些扩展是否支持新版本。

3. 新版本核心特性拆解

下面来逐个分析这次升级中真正影响日常开发的核心能力。这里不会只罗列功能名,而是结合使用场景说明“为什么需要它”以及“它改变了什么”。

3.1 WAL 写入性能优化

WAL(Write-Ahead Logging)是 PostgreSQL 保证数据持久性的核心机制。每次事务提交时,都会先把日志写入 WAL 文件,然后才更新数据页。在高并发小事务场景下,WAL 写入锁常常成为瓶颈。

新版本对 WAL 写入路径做了优化,在多个 CPU 核心环境下,写入吞吐量提升明显。对于大量短事务的在线系统来说,这意味着同样硬件条件下可以支撑更高的 TPS。

实际表现

  • 单连接写入性能提升有限,多连接高并发写入提升显著。
  • 配合synchronous_commit参数的调整,可以在性能与持久性之间灵活权衡。

对开发者的建议

如果你的业务存在大量“插入一条日志”“更新一个状态”这类短事务,升级后大概率能直接感受到吞吐量变化。如果暂时不升级,也可以通过合并事务、使用批量插入等方式减小 WAL 压力。

3.2 vacuum 与索引维护能力增强

vacuum 是 PostgreSQL 中回收已删除元组、更新统计信息、防止事务回卷的机制。它不像 MySQL 的 purge 线程那样完全后台化,vacuum 的效率和调度直接影响数据库健康度。

新版本在 vacuum 上的核心改进集中在索引遍历效率上。旧版本 vacuum 在清理 B-tree 索引时,需要遍历大量索引页面;新版本通过优化遍历算法,显著减少了 I/O 次数和耗时。

实际收益

  • 大表 vacuum 耗时缩短,业务抖动减少。
  • autovacuum对业务的影响更小。
  • 频繁更新删除的表,膨胀控制更及时。

需要注意

即使 vacuum 变快了,也不代表可以放任表膨胀不管。定期检查表的n_dead_tup和表大小变化,仍然是 DBA 的基本功。

3.3 并行查询能力扩展

PostgreSQL 的并行查询机制从 9.6 版本开始引入,之后每个版本都在扩展适用范围。新版本这次重点补上了几个常见盲区:

  • EXISTS子查询
  • IN子查询
  • 部分聚集函数
  • 带有UNION的查询

举个例子,旧版本中下面这类查询可能无法使用并行计划:

SELECT * FROM orders o WHERE EXISTS ( SELECT 1 FROM order_items oi WHERE oi.order_id = o.id AND oi.sku = 'SKU-1001' );

新版本中,优化器会根据表大小和系统配置,自动评估是否启用并行查询。对于分析类业务,这是非常实用的能力提升。

配置并行查询的关键参数

# 单个查询最大并行 worker 数 max_parallel_workers_per_gather = 4 # 系统全局并行 worker 数 max_parallel_workers = 8 # 触发并行查询的最小表大小 min_parallel_table_scan_size = 8MB

需要注意的是,并行查询不是“设置越大越好”。worker 数过多会增加调度开销,反而拖慢小查询。建议根据 CPU 核数和业务特征测试调整。

3.4 逻辑复制与高可用增强

逻辑复制是 PostgreSQL 内置的数据同步机制,基于 WAL 中的逻辑解码能力,可以按表、按行、按列粒度同步数据。它在跨版本升级、数据汇聚、微服务拆库等场景中非常实用。

新版本在逻辑复制上有几个重要改进:

  • 订阅端冲突检测更完善,故障恢复更平滑。
  • 支持从 hot standby 节点创建订阅,减轻主库压力。
  • 对发布端和订阅端的参数校验更严格,减少了配置错误导致的同步中断。

适合使用逻辑复制的场景

  • 大版本平滑升级(新老库并行运行一段时间)。
  • 从 PostgreSQL 同步数据到异构数据库或消息队列。
  • 多个业务库数据汇聚到分析库。
  • 跨机房数据同步。

不适合的场景

  • 需要完整 DDL 同步的场景(逻辑复制对 DDL 支持有限)。
  • 需要实时强一致读的场景(逻辑复制存在延迟)。

3.5 对 Oracle 和 MySQL 开发者的友好度提升

这次升级还有一个隐性变化:语法和功能上继续向工业标准靠拢,迁移成本进一步降低。如果你是刚从 Oracle 或 MySQL 转到 PostgreSQL,下面几个点值得留意。

与 Oracle 的差异
能力OraclePostgreSQL
字符串拼接||||,也支持concat()
分页查询ROW_NUMBER() OVER()LIMIT ... OFFSET ...
序列自增SEQUENCE.NEXTVALSERIALIDENTITYnextval()
空值排序NULLS FIRST/LASTNULLS FIRST/LAST
MERGE支持15+ 支持
递归查询CONNECT BYWITH RECURSIVE
与 MySQL 的差异
能力MySQLPostgreSQL
自增列AUTO_INCREMENTGENERATED AS IDENTITY
替换插入REPLACE INTOINSERT ... ON CONFLICT DO UPDATE
索引类型BTREE / HASHBTREE / GIN / BRIN / HASH
事务隔离默认级别REPEATABLE READREAD COMMITTED
大小写敏感库表名大小写敏感标识符自动转小写

这些差异不完全是“新版本带来的”,但新版本通过语法兼容性改进,让迁移过程更加顺畅。比如MERGE语法的加入,就让 Oracle 迁移过来的 SQL 改动量明显减少。

4. 完整升级实战:从 16 平滑升级到 17

下面进入实操环节。本文以 PostgreSQL 16 升级到 17 为例,完整演示从备份到验证的整个流程。请务必在测试环境操作一遍后再处理生产库。

4.1 升级前的备份

无论使用pg_upgrade还是逻辑导出,备份都是第一步。推荐使用pg_basebackup做物理备份,它可以保证数据文件的一致性。

# 以 postgres 用户执行 su - postgres # 创建备份目录 mkdir -p /data/backup/pg16_backup # 执行物理备份 pg_basebackup -h 127.0.0.1 -p 5432 -U replicator \ -D /data/backup/pg16_backup \ -Fp -Xs -P

这里说明一下参数含义:

  • -h-p:指定数据库地址和端口。
  • -U:指定备份用户,需要有REPLICATION权限。
  • -D:备份输出目录。
  • -Fp:输出格式为普通文件。
  • -Xs:以 stream 方式包含 WAL 日志。
  • -P:显示进度。

如果没有单独的 replication 用户,也可以用超级用户,但不推荐在生产环境这样操作。

除了物理备份,建议再导出一份逻辑备份作为双保险:

pg_dump -h 127.0.0.1 -p 5432 -U postgres \ -Fc -f /data/backup/pg16_dump.dump \ postgres

-Fc表示自定义格式,便于后续用pg_restore恢复。

4.2 安装新版本

以 CentOS / RHEL 环境为例,使用官方 yum 源安装 PostgreSQL 17:

# 安装官方仓库 RPM sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm # 禁用系统自带的旧版本仓库 sudo yum -q module disable postgresql # 安装 PostgreSQL 17 sudo yum install -y postgresql17-server postgresql17-contrib

Ubuntu / Debian 环境:

sudo apt install -y postgresql-17

安装完成后,新版本的二进制文件位于/usr/pgsql-17/bin(RHEL 系)或/usr/lib/postgresql/17/bin(Debian 系)。

4.3 初始化新版本数据目录

# 创建新版本数据目录 sudo mkdir -p /data/pg17_data # 修改属主 sudo chown postgres:postgres /data/pg17_data sudo chmod 700 /data/pg17_data # 切换到 postgres 用户初始化 su - postgres /usr/pgsql-17/bin/initdb -D /data/pg17_data \ --locale=en_US.UTF-8 \ --encoding=UTF8 \ -U postgres

初始化成功后,需要把旧版本中的关键配置文件同步过来,包括但不限于:

  • postgresql.conf中的共享内存、work_mem、max_connections 等参数。
  • pg_hba.conf中的访问控制规则。
  • 如果有自定义的postgresql.auto.conf也要一并处理。

最简单的方式是先对比新旧配置,再手动调整:

diff /data/pg16_data/postgresql.conf /data/pg17_data/postgresql.conf

注意,新版本可能增加了一些新的配置项或废弃了旧的配置项,不要直接覆盖整个配置目录。

4.4 使用 pg_upgrade 升级

pg_upgrade是官方推荐的升级工具,它直接在新旧两个数据目录之间迁移数据文件,速度比逻辑导出导入快很多。

# 停止旧数据库 pg_ctl -D /data/pg16_data stop # 检查是否可以升级(先做预检) /usr/pgsql-17/bin/pg_upgrade \ -b /usr/pgsql-16/bin \ -B /usr/pgsql-17/bin \ -d /data/pg16_data \ -D /data/pg17_data \ -p 5432 \ -P 5433 \ --check

预检通过后,去掉--check参数真正执行升级:

/usr/pgsql-17/bin/pg_upgrade \ -b /usr/pgsql-16/bin \ -B /usr/pgsql-17/bin \ -d /data/pg16_data \ -D /data/pg17_data \ -p 5432 \ -P 5433

核心参数说明:

参数含义
-b旧版本二进制目录
-B新版本二进制目录
-d旧版本数据目录
-D新版本数据目录
-p旧数据库临时端口
-P新数据库临时端口

升级完成后,pg_upgrade会生成两个脚本:

  • analyze_new_cluster.sh:对新库执行 ANALYZE,更新统计信息。
  • delete_old_cluster.sh:确认无误后删除旧数据目录。

4.5 升级后验证

升级完成后,先执行统计信息更新:

./analyze_new_cluster.sh

然后启动新数据库:

pg_ctl -D /data/pg17_data -l /data/pg17_data/logfile start

连接数据库,做以下几项验证:

-- 1. 检查版本 SELECT version(); -- 2. 检查所有数据库 \l -- 3. 检查表数量和数据量是否与升级前一致 SELECT count(*) FROM information_schema.tables WHERE table_schema = 'public'; -- 4. 随机抽查几张核心表的数据量 SELECT count(*) FROM users; SELECT count(*) FROM orders; -- 5. 检查扩展是否正常 SELECT extname, extversion FROM pg_extension;

再验证一下数据库服务状态:

# 查看数据库进程 ps -ef | grep postgres # 查看端口监听 ss -tlnp | grep 5432

如果一切正常,再把新库接入业务之前,建议在测试环境跑一遍核心业务链路,确保功能无差异。

4.6 回滚策略

升级过程中如果发现严重问题,需要有快速回滚的能力。pg_upgrade的优势在于旧数据目录没有被修改,可以直接切回旧版本启动:

# 停止新数据库 pg_ctl -D /data/pg17_data stop # 启动旧数据库 pg_ctl -D /data/pg16_data start

如果你的应用配置了数据库连接地址,只需切换回旧端口即可。这也是为什么升级前保存好旧配置、旧数据目录不动的原因。

5. 常见安装升级问题与排查思路

升级过程中的坑点往往比功能本身更值得关注。下面整理几个高频问题,尤其是很多中文用户在安装时遇到的报错。

5.1 常见报错汇总

问题现象常见原因解决思路
安装时提示 “中文报错” / 乱码系统语言环境不是 UTF-8,或 initdb 指定了错误 locale检查locale -a,指定--locale=en_US.UTF-8
pg_upgrade --check失败,提示版本不一致新旧二进制路径配置错误检查-b-B参数是否指向正确目录
升级后部分表无法访问扩展不兼容或数据目录权限不对检查pg_extension表,重新安装扩展
启动失败:could not open file ... Permission denied数据目录属主不是 postgres 用户chown -R postgres:postgres /data/pg17_data
连接数据库提示password authentication failedpg_hba.conf认证方式变化检查 pg_hba.conf,确认 scram-sha-256 配置正确
升级后查询性能反而变慢统计信息未更新,或 work_mem 参数未同步执行analyze_new_cluster.sh,对比新旧 postgresql.conf
逻辑复制同步中断发布端与订阅端 wal_level 参数不一致确认wal_level=logical,重启数据库

5.2 重点排查:中文环境安装报错

很多用户在 Windows 或 Linux 中文环境安装 PostgreSQL 时会遇到“中文报错”或“服务器初始化失败”的问题。常见原因是 initdb 时系统 locale 与数据库编码不一致。

典型错误示例

initdb: error: invalid locale name: "Chinese (Simplified)_China.936"

解决方案

# 方式一:使用 C locale(性能更好,但不支持中文排序) initdb -D /data/pg17_data -E UTF8 --locale=C # 方式二:使用 UTF-8 locale(推荐中文环境) initdb -D /data/pg17_data -E UTF8 --locale=en_US.UTF-8 # 方式三:如果系统没有 en_US.UTF-8,先安装语言包(Ubuntu) sudo locale-gen en_US.UTF-8 sudo update-locale

在 Windows 安装时,建议不要在安装向导中勾选“使用系统区域设置”,而是手动选择UTF-8编码。

5.3 数据目录权限问题

PostgreSQL 对数据目录权限非常敏感。如果数据目录的属主或权限不对,启动时会直接报错:

FATAL: data directory "/data/pg17_data" has invalid permissions DETAIL: Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).

解决方式:

chown -R postgres:postgres /data/pg17_data chmod 700 /data/pg17_data

5.4 扩展兼容性检查清单

升级前建议执行下面这条 SQL,列出所有已安装的扩展:

SELECT e.extname, e.extversion, n.nspname FROM pg_extension e JOIN pg_namespace n ON n.oid = e.extnamespace;

拿到扩展列表后,去对应扩展的官方文档确认是否支持目标版本。如果扩展不兼容,升级后数据库可能无法正常启动或相关功能不可用。

6. 最佳实践与工程建议

升级数据库只是第一步,更重要的是升级后如何让数据库稳定运行。下面是一些偏工程向的建议。

6.1 参数调优建议

升级后不要沿用旧的postgresql.conf不做任何调整,也不要盲目从网上复制一堆“最佳参数”。核心参数结合业务调整:

参数建议初始值说明
shared_buffers物理内存的 25%PostgreSQL 的共享缓存池
effective_cache_size物理内存的 50%~75%估算操作系统缓存,用于优化器判断
work_mem4MB~16MB排序、哈希操作的内存上限,不要设置过大
maintenance_work_mem64MB~256MBvacuum、索引重建等维护操作的内存
max_connections根据业务预估连接数越多,共享内存占用越大
wal_levelreplica 或 logical逻辑复制时必须设置为 logical
max_wal_size1GB~4GB控制 WAL 文件保留量,影响崩溃恢复速度

新版本可能对某些参数默认值做了调整,建议查看发布说明后,逐项评审现有配置。

6.2 升级后的监控检查

升级完成后,建议持续观察一段时间:

  • 启用pg_stat_statements观察慢 SQL 变化。
  • 跟踪 vacuum 执行频率和耗时。
  • 观察 WAL 生成速率是否有异常波动。
  • 对比升级前后核心接口的响应时间。

以下 SQL 可以用来查看最近慢查询:

SELECT query, calls, total_exec_time / calls AS avg_ms FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 20;

6.3 高可用架构下的升级顺序

如果生产环境使用了主从复制或 Patroni / repmgr 等高可用方案,升级顺序要格外注意:

  1. 先在从节点上升级,验证数据同步正常。
  2. 手动切换主从,让新版本从节点承担主库角色。
  3. 再把原主库升级并重新加入集群。
  4. 整个过程业务方需要感知到一次主从切换,配合维护窗口执行。

强行在运行中的主库上直接执行pg_upgrade是不推荐的,风险很高。

6.4 数据同步与迁移工具选型

很多团队在升级的同时,也在考虑 MySQL、SQL Server、Oracle 与 PostgreSQL 之间的数据同步问题。PostgreSQL 本身的逻辑复制可以解决 PostgreSQL 实例之间的同步;对于异构数据库,需要借助第三方同步工具。选择同步工具时重点看三方面:

  • 是否支持增量同步。
  • 是否支持 DDL 同步。
  • 是否支持冲突检测和断点续传。

不要在生产环境使用未经验证的开源工具同步核心业务数据,测试环境验证充分后再上线。

6.5 安全与权限最小化

升级后重新梳理数据库账号权限:

  • 应用账号只授予业务库的最小权限。
  • 禁止应用账号使用超级用户连接数据库。
  • pg_hba.conf中限制来源 IP。
  • 使用scram-sha-256密码认证,避免使用trust
  • 定期审计角色和权限变化。
-- 查看所有角色及其属性 SELECT rolname, rolsuper, rolcreaterole, rolcreatedb, rolcanlogin FROM pg_roles;

6.6 推荐升级检查清单

序号检查项状态
1物理备份完成
2逻辑备份完成
3扩展兼容性确认
4测试环境升级演练通过
5业务核心链路测试通过
6回滚方案验证过
7监控系统已接入新实例
8参数配置与旧环境对齐

7. 总结与下一步学习方向

这篇文章从 PostgreSQL 新版本的核心特性出发,分析了 WAL 优化、vacuum 增强、并行查询扩展和逻辑复制改进这四大关键方向,然后给出了一套完整的从 16 升级到 17 的操作流程,最后整理了升级过程中的高频问题、排查思路和工程化建议。简单来说,这次升级的核心价值不在于某一项功能有多亮眼,而在于它把 PostgreSQL 在高并发、大数据量、复杂查询三条主赛道上的基础能力整体提升了一次,升级后长期运行更稳,性能余量更大。

接下来,建议你按照下面的方向继续深入:

  • 对照官方 Release Notes,逐条确认自己关心的功能变化。
  • 在测试环境部署新版本,导入业务数据,对比核心 SQL 的执行计划变化。
  • 学习pg_upgrade和物理备份的更多细节,为生产升级做准备。
  • 深入研究逻辑复制和pg_stat_statements监控,提升数据库日常运维能力。
  • 如果团队有多套数据库实例,可以借此机会统一版本基线。

升级数据库不是一件“点了按钮就结束”的事,它需要前期评估、中期操作、后期验证三个环节都做到位。按本文的步骤在测试环境完整走一遍,再安排生产升级,你会从容很多。如果实际操作中遇到其他问题,欢迎在评论区带上报错信息一起讨论。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 3:17:03

从符号到物理:AI算法与计算硬件的底层协同性能优化实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/8 3:14:50

恒压供水变频器故障排查:工频正常但变频失效怎么办?

接到一个现场求助:小区恒压供水泵房里的 ABB 变频器,现在完全不管用了。电机只能通过工频接触器直接启动,自动恒压彻底退出,水压时高时低,住户投诉不断。电工的第一判断是:这台变频器坏了,得换。…

作者头像 李华
网站建设 2026/9/8 3:11:57

解决Context Overflow:企业级Agent长记忆与MCP全链路设计

在企业级AI大模型项目中,系统上线后最先暴露的问题往往不是模型回答得不够聪明,而是模型突然拒绝继续回答。日志里最常见的是context overflow: this conversation is too large for the model,或者是类似this models maximum context length…

作者头像 李华
网站建设 2026/9/8 3:10:52

线性代数主线:特征值与特征向量,一次讲透矩阵的几何本质

经常有读者问我:线性代数到底学了个啥?行列式、逆矩阵、秩,每一个概念单看都像天书,可一旦你找到一条主线把这些内容串起来,整门课一下子就活了。我自己的学习主线,是“特征值与特征向量”。特征值&#xf…

作者头像 李华
网站建设 2026/9/8 3:10:51

自研IDA ARM调试插件:基于GDB RSP协议打通嵌入式调试链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/8 3:10:33

Delphi报表控件ReportMachine 2.6实操指南:从设计器到打印踩坑

简介:ReportMachine2.6是一套面向Delphi开发者的报表设计与打印控件包,专为解决中国式报表制作和超宽表格自动分页输出等难题而设计,既适合初学者快速上手,也能满足经验丰富者的深度定制需求。包内总计454个文件,以Pas…

作者头像 李华