これを書いている約5〜4年前に私たちのクライアントにセットアップされたSSISパッケージ(SQL Serverの実行が非常に遅いため)を調べたところ、次のタスクがあることがわかりました:1 )XMLファイルから[Importbarcdes]というテーブルにデータを挿入します。
2)上記のテーブルをソースとして使用して、別のターゲットテーブルでコマンドをマージします。
3)「[Importbarcodes]から削除」。SSISパッケージのタスクによってXMLファイルが読み取られた後に挿入された行のテーブルをクリアします。
簡単に調べた後、1行しかないテーブルImportBarcodesのすべてのステートメント(SELECT、UPDATE、DELETEなど)の実行には約2分かかりました。
拡張イベントでは、多くのPAGEIOLATCH_EX待機通知が表示されました。
テーブルのインデックスは存在せず、トリガーは登録されていません。
テーブルのプロパティを詳しく調べると、[ストレージ]タブと[一般]セクションで、[データスペース]フィールドに、ページに割り当てられた6ギガバイトを超えるスペースが表示されました。
どうしたの:
クエリは過去4年間、毎日かなりの時間実行され、テーブル内のデータを挿入および削除し、未使用のページファイルを解放せずに残しました。
したがって、これが、拡張イベントセッションによってキャプチャされた待機イベントとテーブル上でゆっくりと実行されたコマンドの主な理由でした。
実行ALTER TABLE ImportBarcodes REBUILD
すると、未使用のスペースがすべて解放される問題が修正されました。TRUNCATE TABLE ImportBarcodes
すべてのページファイルとデータを削除するという唯一の違いを除いて、同様のことを行いました。