2017-11-21 8 views
1

問題があります。Execute文に長い遅延があります

2017年11月20日20:30:10324 [DEBUG] []テーブルに

2017年11月20日21時30分のデータを保存し、私はSybaseの中でいくつかのデータを挿入しようとすると、長時間の遅延を持っています:28,245 [DEBUG] []完了!

1時間、カール!

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

なぜこのようなことが起こるのでしょうか?

+0

プログラムではなくコマンドラインから挿入しようとすると、どれくらい時間がかかりますか? DBの健全性チェックの結果は? – Ravik

+0

また、挿入が実行されている間にsp_whoを介して他のプロセスをチェックし、他のspid変更データによってブロックされているかどうかを確認してください。 SQLクライアントの中には、デフォルトで 'autocommit off'を指定して実行するものがあります。 –

答えて

0

クエリが遅い場合は、クエリがisqlのような他のクライアントからも実行されているかどうかを確認することをお勧めします。

2番目の手順は、isqlがローカルで実行されているときに、これが多少ネットワークに関連するかどうかをチェックし、挿入が遅くなることです。

クエリがまだ遅い場合、これはあるかもしれないようにデータベース関連の遅い設計:私は設定で挿入を実行します列に

  • 索引付けされていない外部キー
  • 遅いトリガ

set statistics io on 
set statement_cache off 

I/Oの数が少ないかどうかを確認してください。これは、大規模なスキャンが処理されると情報につながります。

上記以外の場合は、どのデータベース待機イベントが原因で操作が遅くなっているかを確認する必要があります。待機イベントを調べるには、次のコードを実行します。

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

追加のMDA構成が必要な場合があります。クエリは、どのイベントが操作の原因となっているかに関する情報を表示します。

関連する問題