0

私は:-のような単純なSQL呼び出しを持っています

select col1,col2 from table1

また、システムが以下を実行する場合もあります。-

update table1 
set col3 = 'something' 
where col1 ='s1' and col2 ='s2'

これらのクエリは、サーバーで実行されているさまざまなアプリケーションを介して実行され、10万行のような1つのテーブルでのみ発生します。

私は数百万行のテーブルを持っています-それはそれらでタイムアウトしませんが、なぜそれがこれでタイムアウトするのかわかりません。

これらのクエリは問題なく一日中実行されますが、日中(特にピーク時)にエラーで失敗することがあります-タイムアウトが期限切れになります-

このエラーを解決するために何ができるか教えてください

ある種のロックを実行する必要がありますか?

また、ユーザーがコメントを更新しているときに、システム上の他のユーザーがテーブル内の同じ行を更新しようとした場合(行が編集のためにロックされているため、2番目のユーザーがタイムアウトするのでしょうか)、それを回避する方法はありますか?

4

1 に答える 1

2

私は答えを見つけました-それは古いシステムのテーブルだったので-以前のユーザーはそこにすでに仮想主キーがあると思って主キーを追加しませんでしたが、それは正しくありませんでした。

SQLの編集に時間がかかりすぎて、タイムアウトになるためです。

だから私はテーブルに複合キーを作成しましたが、今は問題なく動作しています。

結論-データの更新、削除を行う場合は、主キーのないテーブルを作成しないでください

コメントありがとうございます

于 2012-05-22T10:12:11.987 に答える