我正在使用表输入步骤从Sybase的表中读取数据。查询非常简单:
SELECT person_ref, displayname FROM person
该表有大约200万行。我正在连接到Sybase ASE 12.我的用户具有只读权限。 PDI正在使用jconnect驱动程序,其中包含以下选项:
IMPLICIT_CURSOR_FETCH_SIZE=5000
SELECT_OPENS_CURSOR=True
我还尝试在该查询中使用noholdlock选项来更改隔离级别。
问题是查询似乎长时间闲置,差不多一分钟。 PDI表示该步骤处于空闲状态,然后更改为“正在运行”。这使得很难测量过程所需的时间,因为PDI不会开始测量时间,直到步骤从空闲状态改变状态。
我似乎无法在手册中找到任何内容,或通过减少或消除此时间来加快阅读时间的任何选项。我有什么选择吗?空闲状态是否表示PDI正在等待Sybase的响应?
答案 0 :(得分:1)
也许您的查询很长时间才能检索数据。
潜伏时间在jdbc架构中。它将查询发送到数据库,数据库将数据存储在缓冲区中。仅当此缓冲区已满时,数据才会传输回PDI。在收到一些数据之前,Generate row
处于空闲模式。
如果要测量包括空闲时间在内的时间,请放置一个没有任何延迟的步骤,例如Input table
(1行就足够了)步骤。您无需将此步骤连接到任何内容,因为PDI将尽快并行启动所有步骤。
您无法在Step Metrics
底部标签的Metrics
行看到总结果。但是你会在Block this step until steps finish
上得到结果。
您还可以使用youKettleInstallDir/sample/transformation/Block this step until steps finish.ktr
。您在发行版附带的示例目录中有一个示例。打开 ui <- fluidPage(actionButton("add", "Add UI") )
server <- function(input, output, session) {
observe({
insertUI(
selector = "#add",
where = "afterEnd",
ui = textInput(paste0("txt", input$add),
"Insert some text")
)
})
}
,然后用流量替换顶行。然后观察阻塞步骤的统计数据。
答案 1 :(得分:0)
在我看来,你在转换锁定表人的过程中又迈出了一步。您有一个Output table
步骤尝试截断表格人员的可能性极大。
答案 2 :(得分:0)
我不知道这是否是我所说的答案,但我确实找到了一种让Sybase连接快速响应的方法。在任何地方都有一个名为Sybase的查询工具,您可以使用它直接查询数据库。我所做的是在一台连接良好的独立机器上查看安装。
该计算机具有为Sybase DB定义的ODBC连接,并且客户端工具的安装具有自己的Sybase驱动程序版本以及一些DLL文件。我将罐子和dll工具放入装有PDI的机器中。我确保它们都在类路径中,并创建了一个指向系统ODBC的通用JDBC连接。它的速度是你现在所期望的速度。