执行语句有很长的延迟

时间:2017-11-21 07:33:41

标签: java sql sybase

我有一个问题。当我尝试在Sybase中插入一些数据时,我有很长的延迟:

2017-11-20 20:30:10,324 [DEBUG] []将数据保存到表格

2017-11-20 21:30:28,245 [DEBUG] []完成!

一小时,卡尔!

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();

有想法为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

如果查询运行缓慢,我建议检查查询是否也从其他客户端运行 - 如isql。

第二步是检查这是否与网络有关,并且当isql在本地运行时插入也很慢。

如果查询仍然很慢,那么这可能是与数据库相关的慢速设计,如:

  • 列上的无索引外键
  • 慢触发器

我会使用设置

运行插入
set statistics io on
set statement_cache off

检查I / O的数量是否低。如果处理大扫描,这将导致信息。

如果上述情况不起作用,那么您需要检查哪个数据库等待事件导致操作变慢。运行以下代码以调查等待事件:

select * from master..monProcessEvents where SPID = @@SPID

可能需要其他MDA配置。查询将显示有关哪个事件导致操作变慢的信息​​。