【发布时间】:2011-08-17 04:14:02
【问题描述】:
我对 perl dbi 中嵌套形式的性能处理 sql 有疑问。
基本上,脚本正在做的是
连接到 DB1
连接到 DB2
从 DBI 获取数据
在一个while循环中,
使用来自 DB1 的数据并创建更新或插入语句
在 DB2 中执行 sql
与 DB2 不兼容
断开 DB1
现在的问题是,就性能而言,这是最佳做法还是以下方法是最佳选择。
从 DB1 获取日期
将数据写入暂存文件
从暂存文件中获取数据
process the data to udpate in DB2.
编辑:我在连接到 DB1 后添加了连接到 DB2。但这不是我要说明的重点。这更多是关于服务器正在从数据库服务器和存储数据的磁盘读取的 I/O 和系统调用的性能问题。
如果您查看第一种方法。
在循环中。 脚本从 DB1 获取一行数据 并等待返回的数据在 DB2 中得到处理。
如果有数千条记录,当您对服务器进行数千次系统调用以从磁盘读取数据时,对性能有何影响
【问题讨论】:
-
在 while 循环中连接数据库不是一个好主意。您应该在脚本的开头连接到 DB2。在这一点上,我在第一段代码中没有看到其他需要改进的地方。
标签: perl performance sybase dbi