连接到 64 位 Firebird 数据库的 C++ Builder 32 位应用程序

C++ Builder 32-bit app connecting to 64-bit Firebird database

我们目前正在使用用 C++ Builder 编写的 32 位应用程序访问 32 位 Firebird 服务器。作为数据库连接层,我们使用 Firedac 库。由于性能原因,我们正计划为一些使用大型数据库(> 1e7 条记录,文件大小 ~ 3GB)的客户迁移到 64 位版本的数据库机器。我想知道除了卸载 32 位版本的 Firebird 并在服务器端安装 64 位版本之外,此转换还需要哪些额外步骤。我对我发现的这些性能调整不感兴趣 elsewhere

我必须重新编译我的应用程序吗?这需要更改我的申请吗?可以从 32 位程序访问 64 位数据库吗?

我是否必须升级数据库文件的二进制格式以便它们可以被 64 位 Firebird 服务器使用,或者我可以开箱即用吗?

应用程序通过 Firebird 的有线协议与数据库通信,这意味着 32 位应用程序可以毫无问题地与 64 位 Firebird 通信(反之亦然)。唯一的例外是如果您使用嵌入式 Firebird,因为它只是您应用程序中的一个库。

所以不需要:您不需要重新编译您的应用程序。

关于你的第二个问题(应该是一个单独的问题):看情况。

如果您使用的是 Firebird 2.0 (iirc) 或更早版本(ODS 11.0 或更早版本)的 ODS(磁盘结构),那么您必须备份和恢复数据库,因为 32 位和 64 位的 ODS 不同位.

如果您使用的是 Firebird 2.1 或更高版本的 ODS(ODS 11.1 用于 Firebird 2.1,11.2 用于 Firebird 2.5,12 用于 Firebird 3)您正在相同的系统之间迁移版本,那么就不需要备份和恢复了,因为ODS是一样的。

但是,如果您要在点版本之间进行迁移,那么您应该查看发行说明。例如,在旧版本的 Firebird 2.5 中出现了一些问题,需要备份和恢复(或至少重建索引)才能解决问题。

如果您要从 2.1 (ODS 11.1) 迁移到 2.5 (ODS 11.2),那么您应该备份和恢复以升级数据库 ODS,以便您可以使用新版本的所有功能。

如果您要从任何较旧的 Firebird 版本(ODS 11.2 或更早版本)迁移到 Firebird 3.0 (ODS 12),那么您必须备份和恢复以升级 ODS(如Firebird 3.0 不支持旧的 ODS 版本。

您可以通过gstat -h <your database>查看ODS版本。