私の同僚(同僚だったと約束します!)は、先週の木曜日からメインのSQL Serverで更新プログラムを実行したままにしています(そうです、100時間プッシュしています!)。問題のSQL(1つのトランザクションで追加する可能性があります)は次のとおりです。
update daily_prices set min_date = (select min(a.date)
from daily_prices a
where a.key = daily_prices.key and
a.iid = daily_prices.iid)
(ええ、私は知っています、凶悪です...)
クエリプランの合計コストは22186.7であり、更新する行の推定数は約1億5,100万です。
明らかに、このクエリを何らかの方法で解決する必要があります。クエリを強制終了すると、残忍なロールバックが生成されることに気付きますが、それがどこまで進んだかを知る方法はありません。私たちが知っている唯一のことは、sys.dm_exec_requestsからのこのエントリです。
session_id status query_textcpu_timetotal_elapsed_time読み取り書き込みlogical_reads 52一時停止された更新daily_prices...2328469 408947075 13831137 42458588 151809497
だから私の質問は、私たちの最善の行動方針は何でしょうか?
- 待って
- それを殺してロールバックし、次の氷河期の前にロールバックすることを願っています
- 他に何かありますか?