执行语句有很长的延迟
Execute statement have a long delay
我有一个问题。当我尝试在 Sybase 中插入一些数据时,我有很长的延迟:
2017-11-20 20:30:10,324 [DEBUG] [] 保存数据到table
2017-11-20 21:30:28,245 [调试] [] 完成!
一个小时,卡尔!
String query = "INSERT INTO {0}table (id, doc_id, num_doc, amount, unload_date, status) VALUES (?, ?, ?, ?, ?, ?)";
pstmt = lib.getConnection().prepareStatement(MessageFormat.format(query, "my_schema"));
pstmt.setLong(1, id);
pstmt.setLong(2, docId);
pstmt.setString(3, numDoc);
pstmt.setBigDecimal(4, amount);
pstmt.setDate(5, new Date());
pstmt.setInt(6, 0);
pstmt.execute();
为什么会发生这种情况?
如果查询 运行ning 很慢,我建议检查查询是否也 运行ning 来自其他客户端 - 例如 isql。
第二步是检查这是否与网络有关,并且当 isql 在本地 运行 时插入速度也很慢。
如果查询仍然很慢,那么这可能是与数据库相关的慢速设计,例如:
- 列上未编制索引的外键
- 慢触发
我会运行插入设置
set statistics io on
set statement_cache off
并检查 I/O 的数量是否不足。如果处理大型扫描,这将导致信息。
如果以上方法均无效,那么您需要检查是哪个数据库等待事件导致操作变慢。 运行 以下代码用于调查等待事件:
select * from master..monProcessEvents where SPID = @@SPID
可能需要额外的 MDA 配置。该查询将显示有关导致操作变慢的事件的信息。
我有一个问题。当我尝试在 Sybase 中插入一些数据时,我有很长的延迟:
2017-11-20 20:30:10,324 [DEBUG] [] 保存数据到table
2017-11-20 21:30:28,245 [调试] [] 完成!
一个小时,卡尔!
String query = "INSERT INTO {0}table (id, doc_id, num_doc, amount, unload_date, status) VALUES (?, ?, ?, ?, ?, ?)";
pstmt = lib.getConnection().prepareStatement(MessageFormat.format(query, "my_schema"));
pstmt.setLong(1, id);
pstmt.setLong(2, docId);
pstmt.setString(3, numDoc);
pstmt.setBigDecimal(4, amount);
pstmt.setDate(5, new Date());
pstmt.setInt(6, 0);
pstmt.execute();
为什么会发生这种情况?
如果查询 运行ning 很慢,我建议检查查询是否也 运行ning 来自其他客户端 - 例如 isql。
第二步是检查这是否与网络有关,并且当 isql 在本地 运行 时插入速度也很慢。
如果查询仍然很慢,那么这可能是与数据库相关的慢速设计,例如:
- 列上未编制索引的外键
- 慢触发
我会运行插入设置
set statistics io on
set statement_cache off
并检查 I/O 的数量是否不足。如果处理大型扫描,这将导致信息。
如果以上方法均无效,那么您需要检查是哪个数据库等待事件导致操作变慢。 运行 以下代码用于调查等待事件:
select * from master..monProcessEvents where SPID = @@SPID
可能需要额外的 MDA 配置。该查询将显示有关导致操作变慢的事件的信息。