gpt4 book ai didi

嵌套 sql 上的 Perl DBI 性能

转载 作者:行者123 更新时间:2023-12-04 06:27:30 26 4
gpt4 key购买 nike

我有一个关于 perl dbi 中嵌套形式的性能处理 sql 的问题。

基本上,脚本正在做的是

connect to DB1

connect to DB2

fetch data from DBI

inside a while loop,

use data from DB1 and create an update or insert statement

execute the sql in DB2

disconenct from DB2

disconnect DB1



现在的问题是,这是性能方面的最佳实践还是以下方法是最佳选择。

get date from DB1

write the data in a staging file

get data from the staging file

  process the data to udpate in DB2. 


编辑:我在连接到 DB1 后添加了连接到 DB2。但这不是我想要表达的重点。这更多是关于服务器从数据库服务器和存储数据的磁盘读取的 I/O 和系统调用的性能问题。

如果你看第一种方法。

在一个循环内。
脚本从 DB1 获取一行数据
并等待返回的数据在 DB2 中得到处理。

如果有数千条记录,当您对服务器进行数千次系统调用以从磁盘读取数据时,对性能有何影响

最佳答案

if there is thousands of records, what is the impact on the performance when you are making thousnds of system calls to the server to read the data from the disk



考虑到典型的小或平均记录大小,数千条记录并不多。您不知道数据实际上是从磁盘读取的,还是驻留在内存中的缓冲区中。所以你不能确定系统调用的数量。你为什么要打扰?

如果性能对您很重要,我建议您在典型的现实场景中测试这两种方法。

如果您正在处理锁定数据库和长时间运行的进程(无论出于何种原因),最好一次获取您需要的所有数据(暂存文件方法),这样您就不会在源上持有锁以及整个处理过程中的目标服务器。

您的选择还可能取决于您对用于批量导入数据的工具或 API 的熟悉程度。例如, bcp.exe for MSSQL 是用于导出和导入数据的便捷工具。大多数其他数据库都有类似的工具。

关于嵌套 sql 上的 Perl DBI 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5860791/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com