0

我正在尝试编写一个执行一些 db2 工作的 bash 脚本。我面临的问题是子外壳需要重新连接 db2 连接。

不幸的是,每次重新连接都很慢,因为需要建立大约 1000 个新连接,每个需要大约一秒钟。因此,我希望避免这些子外壳重新连接。

通过谷歌搜索这种情况,我发现有一种方法可以使用变量 DB2DBDFT 设置默认连接模式。不幸的是,使用这个设置,Linux 登录用户名将成为您正在运行的 DB 模式名称,而我们的系统与登录 bash 的用户具有不同的 DB 用户名。

1)有没有办法设置 DB2DBDFT 变量,但使它可以使用“使用 123 的用户 abc”样式语法,或者如果有其他变量可以设置这些(我已经搜索但没有找到它们) .

2)如果有,这真的会节省我的时间吗?显然,如果我找到一个解决方案,我将进行基准测试,但我不确定即使我找到了这个,它会更快,而且肯定会减慢所有其他子shell 的生成速度。

3)我对其他建议非常开放,我尝试过管道到while语句而不是调用子shell,但后来记住这有同样的问题。

例如

    result=$(call_procedure "$get_sell_price_old_sql")

相对

    call_procedure "$get_sell_price_old_sql" | while read result_
    do
            result=$result_
    done

4)我确定还有其他我没有考虑过的途径,非常感谢任何建议和建议。

非常感谢,米奇。

4

1 回答 1

0

要回答您的第二个问题,不,这不太可能使流程更快。DB2DBDFT 仅在连接不存在时指定要连接的数据库的名称,因此每次运行任何 SQL 语句时客户端仍将连接。不,您不能为隐式连接指定用户,它将始终是登录的操作系统用户。

通常,数据库连接应该非常快,除非它是第一次连接到非活动数据库,在这种情况下,最耗时的是数据库激活。如果您是脚本运行时连接到数据库的唯一用户,请尝试db2 activate db <your db>在连接前发出命令,这将在连接之间保持它处于活动状态。

于 2013-05-13T18:18:45.727 回答