我们目前使用用c++ Builder编写的32位应用程序访问32位Firebird服务器。作为数据库连接层,我们使用Firedac库。由于性能原因,我们正在为一些使用大型数据库(> 1e7条记录,文件大小~ 3GB)的客户计划迁移到64位版本的数据库机器。我想知道除了卸载32位版本的Firebird并在服务器端安装64位版本之外,这个过渡还需要哪些额外的步骤。我对这些我在别处发现的性能调整不感兴趣。
我必须重新编译我的应用程序吗?这是否需要更改我的应用程序?64位的数据库可以从32位的程序访问吗?
我是否必须升级二进制格式的数据库文件,以便它们可以被64位Firebird服务器使用,或者我可以使用它们开箱即用?
应用程序通过Firebird的有线协议与数据库通信,这意味着32位应用程序可以毫无问题地与64位Firebird通信(反之亦然)。唯一的例外是使用嵌入式Firebird,因为它只是应用程序中的一个库。
所以不:你不需要重新编译你的应用程序。
关于你的第二个问题(这应该是一个单独的问题):这要看情况。
如果您使用的是Firebird 2.0 (iirc)或更早版本(ODS 11.0或更早版本)的ODS (On Disk Structure),那么您必须备份和恢复数据库,因为32位和64位的ODS是不同的。
如果您使用的是Firebird 2.1或更高版本的ODS (Firebird 2.1的ODS 11.1, Firebird 2.5的ODS 11.2, Firebird 3的ODS 12) 和,您在同一版本之间进行迁移,那么您不需要备份和恢复,因为ODS是相同的。
然而,如果您在点版本之间迁移,那么您应该检查发行说明。例如,旧版本的Firebird 2.5中存在一些问题,需要备份和恢复(或至少重建索引)来修复问题。
如果要从2.1 (ODS 11.1)迁移到2.5 (ODS 11.2),则应该备份和恢复以升级数据库ODS,以便可以使用新版本的所有功能。
如果要从任何较旧的火鸟版本(ODS 11.2或更早版本)迁移到火鸟3.0 (ODS 12),则必须进行备份和还原以升级ODS(因为火鸟3.0不支持较旧的ODS版本)。
您可以通过gstat -h <your database>
查看ODS版本