此页面为机器翻译。请阅读英文原文。 English

IBSurgeon 文库

HQbird 2024R2 Update 10 详细更新内容

HQbird 2024R2 Update 10 中的新增功能

物化视图(5.0 中的新功能)

HQbird 现已完全支持物化视图–这是一种新的数据库对象类型,它结合了视图的定义与常规表的物理存储。

概述

物化视图(MV)使用标准 SQL 查询定义,引擎使用该查询将数据行填充到底层 MV 表中。与常规视图不同,MV 数据持久化存储在磁盘上,并且可以建立索引。不允许直接在 MV 上执行 DML 语句(INSERT、UPDATE、DELETE)–必须使用新的 REFRESH 命令来更新数据。

创建和管理物化视图

  • CREATE [OR ALTER] MATERIALIZED VIEW - 创建或替换 MV,可选择是否进行初始数据加载(WITH DATA / WITH NO DATA)。
  • ALTER MATERIALIZED VIEW - 修改 MV 定义;自动删除所有现有索引。
  • RECREATE MATERIALIZED VIEW - 删除同名的任何现有视图(常规或物化),并创建全新的 MV。
  • DROP VIEW - 用于删除物化视图(没有单独的 DROP MATERIALIZED VIEW 命令)。
  • 可以在 MV 上创建任何类型的索引。不支持约束和触发器。

在视图类型之间转换

  • ALTER MATERIALIZED VIEW ... TO NOT MATERIALIZED - 将 MV 转换为常规视图。所有索引和数据都将被删除。
  • ALTER VIEW ... TO MATERIALIZED - 将常规视图转换为物化视图。依赖对象不受影响。

刷新物化视图数据

新的 REFRESH MATERIALIZED VIEW 语句用于更新 MV 内容。这是一个 DDL 命令–执行会延迟到当前事务提交时。有四种模式可用:

  • 完全重新加载(独占模式) - REFRESH MATERIALIZED VIEW

    • 停用索引,删除所有现有数据,从 MV 查询重新加载,重新激活索引。
    • 当许多行发生变化时,这是最快的选项。
    • 需要对 MV 表进行独占锁定。
    • 数据加载出错时:新加载的数据将被删除,索引以空状态重新激活。
    • 索引激活出错时:受影响的索引保持非活动状态;数据和其他索引不受影响。索引构建错误会作为警告报告。
  • 并发更新 - REFRESH MATERIALIZED VIEW CONCURRENTLY

    • 无需独占锁定–刷新期间允许对 MV 进行并发查询。
    • 使用带有两个有序游标的合并算法:一个用于当前 MV 数据,一个用于 MV 查询结果。
    • 插入新行、更新已更改的行、删除已移除的行–全部在事务控制下进行。
    • 需要在 MV 上有唯一索引。
    • 当需要并发访问或自上次刷新以来只有少量行发生变化时,这是首选方式。
    • 注意:如果 MV 查询包含 ORDER BY,并发刷新后行顺序可能无法保持。
  • 删除所有数据 - REFRESH MATERIALIZED VIEW DROP DATA

    • 删除所有 MV 数据和索引内容。可用于释放磁盘空间。需要独占锁定。
  • 级联刷新 - 在上述任何形式后附加 CASCADE

    • 按正确的依赖顺序刷新给定 MV 所依赖的所有 MV。
    • 每个 MV 只处理一次。
    • CONCURRENTLY CASCADE 要求所有受影响的 MV 都有唯一索引。
    • DROP DATA CASCADE 删除所有受影响 MV 的数据。
    • 受影响的 MV 名称和刷新顺序会在提交前作为状态向量中的警告报告。

备份和恢复(gbak)

  • 备份:MV 数据不存储在备份文件中,与常规视图相同–无需特殊处理。
  • 恢复:所有 MV 在恢复过程结束时按正确的依赖顺序自动刷新。
  • 新的 gbak 开关 -NO_MATVIEWS(可缩写为 -NO_M)- 在恢复期间跳过 MV 刷新。
  • 对应的 Services API 选项:isc_spb_res_no_matviews
  • 重要提示: 包含 MV 的备份无法在不支持 MV 的 Firebird 版本上恢复。在迁移到旧版本之前,请使用 ALTER MATERIALIZED VIEW ... TO NOT MATERIALIZED 进行转换。

已知限制 / 计划工作

  • 复制支持 - 尚未实现。
  • DDL 触发器 - 尚未实现。
  • 访问权限检查 - 尚未实现。
  • 错误消息 - 正在审查中。

备份和恢复

  • 验证备份任务:在压缩前增加了循环删除;磁盘空间计算系数现在可配置。
  • nBackup 任务:修正了跳过逻辑;日志重命名算法改为带重试的原子重命名,以防止部分重命名。
  • BRZ 任务的备份目录和文件名模板现在可配置:
    • backup-directory - 允许按数据库和作业指定目标目录。
    • backup-name - 允许定义文件名模板,例如 brr_{0,date,yyyyMMdd_HH-mm-ss}.fbk
    • 增加了输入验证器:检查目录名称的有效性,并在目录不存在时创建该目录。

云备份 / 文件传输

  • 在 cloudbackup(filetransfer)任务中增加了通过 Socket 协议上传文件的支持。
  • 移除了按段选择性文件压缩选项–相应任务的文件压缩现在始终启用。

跟踪

  • 在跟踪配置中增加了 connection_id 作为附加字段。
  • 跟踪报告处理:增加了按进程名称进行不区分大小写的分组和过滤。

VSS 写入器

  • 增加了额外的诊断日志记录–现在记录数据库状态信息,包括数据库大小、日期和时间以及 gstat -h 输出。

Web 界面

  • 本地化改进:修正了翻译并调整了 Web 控制台的本地化算法。
  • 在 Web 对话框中增加了带标签文本的可视化分隔元素–支持表单元素的逻辑分组。
  • 更改了客户端资源(网页、JS、CSS)的缓存破坏策略,以防止浏览器在更新后使用过时文件。

配置

  • 更新了服务器授权字段名称(sysdba/ownerserviceAPI)。
  • 为服务器端(Java)语言/区域设置增加了保留配置参数。
  • 修正了默认配置文件以匹配文件传输任务的新默认设置:
    • 端口从 8721 改为 8722。
    • 默认用户从 admin2/ admin3 改为 socketuser
    • 密码强度设置统一为所有配置中的强密码。
  • 注册 KA 许可证文件时,不再需要在主机字段中指定 HTTP/HTTPS 协议前缀。

错误修复

  • 修复了当数据库的所有任务暂时被禁用时触发的虚假严重警报。
  • 修复了在配置的 SYSDBA 用户没有权限列出跟踪会话的系统上检索活动跟踪会话列表时的错误。
  • 修复了第三方解密组件中未正确处理 UTF-8 编码路径的 bug。注意:在 mon/trace 服务更新并重新构建之前,文件或数据库路径中的 UTF-8 字符仍可能导致 mon/trace 输出出错。
  • 修复了复制配置处理器中错误保留空值键的问题。
  • 修复了 Firebird 4 及更高版本的 journal_archive_command 处理(与 firebird/firebird PR #8381 中的上游修复保持一致)。
  • 修复了 dg2fbcc.jar 配置生成器插件及其调用代码中的错误。

安装程序和构建

  • Windows 安装程序更新了修订后的脚本和逻辑。
  • 客户端库二进制文件已更新。
  • OpenSSL 更新到较新版本。
  • 为特定产品的构建变体增加了条件代码分支。
  • 在安装程序构建过程中增加了文件签名。

服务器端本地化基础设施

已实现服务器端(Java)文本消息的本地化机制。区域设置文件已准备好,但尚未填充翻译内容,该机制也尚未在生产环境中激活。此基础设施旨在用于未来服务器消息的本地化。