简介 【程序编程相关:跨多个数据源的 J2EE 开发: 细节探】
【推荐阅读:在 DB2 通用数据库中实现会话间警告】 dbexport 与 dbimport 是 ibm informix® 数据移动实用程序,它们将数据库从一台机器移至另一台.整个过程十分简单明了.dbexport 创建一个特殊目录,在该目录中它创建一个记录当前数据库结构的模式文件,然后将数据卸装到每个数据库对象的 ascii 文件中.可以将那些模式与数据文件保存在磁盘或磁带上,然后通过使用 unix® tar 或其它实用程序方便地将它们转移到另一台机器.同时,dbexport 在用户的当前目录中创建一个消息文件,以记录 dbexport 操作期间发生的任何错误与警告.消息文件的名称是 dbexport.out . 【扩展信息:DB2 和 Java: 总览图】dbimport 实用程序使用由 dbexport 创建的模式与数据文件,并在另一台机器上创建完全相同的数据库.与 dbexport 一样,dbimport 也在用户的当前目录中创建消息文件 dbimport.out ,以记录 dbimport 操作期间的错误与警告.
这些实用程序用于 逻辑备份.逻辑备份是指备份数据库结构或模式及逻辑数据库对象(如表.索引.视图.触发器与存储过程).逻辑备份与用诸如 ontape.on-archive 或 on-bar 之类的实用程序产生的物理备份完全不同,后者备份整个 informix 实例与原始磁盘空间.
逻辑备份的一大好处是它的灵活性.dbexport 创建的模式文件是一个 ascii 文件,在导入数据库前可以随时对其进行编辑.您可以修改几个方面:
表的数据块大小.可以扩大第一个与第二个表数据块大小,以使表有较少的但更大的数据块.这可以提高总体性能. 表或索引的物理位置.根据您对操作系统的磁盘 i/o 的研究,您可能想将一些表与索引移至另一个位置来减少 i/o 负载. 索引与约束的名称.您可能想用更有意义的名称自动替换生成的索引与约束名称. 数据库对象的结构.通过编辑模式文件,可以将另一种分段策略应用于表与索引,以便在导入数据库时,表与索引在不同的磁盘中分段以达到更好的性能.此外,可以更改导出数据库的名称,这样就可以将同一数据库的多个副本保存在同一 informix 实例中.对于那些总是喜欢为进行比较而保存原始数据库的开发人员与测试人员来说,这真的很有用.
逻辑备份的另一个好处是其更细的颗粒度.在恢复时,您无需关闭整个 informix 实例;而只要在数据库级别上就可以恢复它.这样,可以避免妨碍其他正在操作其它数据库的人.
由于这些好处,我们在进行开发.单元测试.黑盒或白盒测试以及集成测试时常常使用 dbexport 与 dbimport 实用程序.
我们碰到的问题
大多数数据库都十分小,大小只有几百兆字节.但少数数据库相当大 — 不仅因为数据的大小而巨大,而且在触发器与存储过程的数量上也很大.其中的一个数据库超过二吉字节,包含四百多个存储过程与约一千个触发器.因为 ibm informix 存储过程语言(spl)是一个方便的中间层 api,所以许多开发人员与程序员都喜欢用它来实现业务规则,并将其用作前端应用程序与数据库服务器之间的链接.我们认为存储过程与触发器的数量会随发行版的更迭而增长.在导出与导入小型数据库(几百 mb 的数据库)时,我们没有任何问题,但在导入大型数据库(有大量数据及众多触发器与存储过程的数据库)时,我们在长事务与长编译时间上遇到问题.
长事务
ibm informix 将导入数据库的整个过程当作单个事务.当数据很大,而且有许多触发器与存储过程时,很容易陷入“长事务”状态.... 下一页