テーブル削除の高速化
ゲスト
お世話になります。
現在、参画しているPJにてあるSAPツールを導入しております。
ツールとしてはクライアントコピーのようなもので、送り元(クライアント)のデータを送り先(クライアント)にデータ転送するものです。
このツールの使用にあたり、ざっくり仕様を書くと以下の通りです。
?送り先のデータを削除する
?送り元でデータを抽出する
?送り元から送り先にデータを転送する
ここで、?のデータ削除について質問させてください。
導入ツールにもテーブルデータ削除機能はあるのですが、テーブルサイズによっては非常に時間がかかっています。おそらくロジックとしてはクライアント番号のみでテーブルを削除しているだけだと思います。
そこで、Note:365304を参考に個別のテーブルを削除するレポートPGMを作成しました。
処理概要は以下の通りです。
1.テーブル(選択画面で入力)の主キーを取得
2.テーブルから1をコミット行分取得し内部テーブルに格納
3.2をテーブルからDELETE
4.COMMIT WORK
5.1〜4をレコードがなくなるまで繰り返す
テーブルごとに当然削除スピードが異なるのは当然ですが、GLPC※(※=P、A、T)やCE2※※※※など管理会計系のテーブルは削除件数やテーブル長も多いため非常に時間がかかっています。
■質問
削除スピードを上げるには何か策がありますでしょうか。
(ABAPの改修もありですが、レコード数でコミットはかけたいです)
現在、こちらとしては以下の策を講じております。
?<テーブル名>~0の索引の統計情報の更新(DB02)
?上記索引のインデックス再作成(これから実施予定)
※この環境では3年前よりインデックスの更新は行っておらず
しかもクライアントコピーやレコード削除を数多く実施しております。
DBはSQLserverを使ってます。
参考
CE2※※※※のテーブル
テーブル長:1263
レコード数:約30,000,000件
削除速度 :60件/秒
半分削除するのに丸3日(250,000秒)ほどかかります。
GLPC※については削除速度はもう少し速いです。
私自身あまりDBに詳しくないので、知見のある方がいらっしゃいましたらよろしくお願いいたします。
現在、参画しているPJにてあるSAPツールを導入しております。
ツールとしてはクライアントコピーのようなもので、送り元(クライアント)のデータを送り先(クライアント)にデータ転送するものです。
このツールの使用にあたり、ざっくり仕様を書くと以下の通りです。
?送り先のデータを削除する
?送り元でデータを抽出する
?送り元から送り先にデータを転送する
ここで、?のデータ削除について質問させてください。
導入ツールにもテーブルデータ削除機能はあるのですが、テーブルサイズによっては非常に時間がかかっています。おそらくロジックとしてはクライアント番号のみでテーブルを削除しているだけだと思います。
そこで、Note:365304を参考に個別のテーブルを削除するレポートPGMを作成しました。
処理概要は以下の通りです。
1.テーブル(選択画面で入力)の主キーを取得
2.テーブルから1をコミット行分取得し内部テーブルに格納
3.2をテーブルからDELETE
4.COMMIT WORK
5.1〜4をレコードがなくなるまで繰り返す
テーブルごとに当然削除スピードが異なるのは当然ですが、GLPC※(※=P、A、T)やCE2※※※※など管理会計系のテーブルは削除件数やテーブル長も多いため非常に時間がかかっています。
■質問
削除スピードを上げるには何か策がありますでしょうか。
(ABAPの改修もありですが、レコード数でコミットはかけたいです)
現在、こちらとしては以下の策を講じております。
?<テーブル名>~0の索引の統計情報の更新(DB02)
?上記索引のインデックス再作成(これから実施予定)
※この環境では3年前よりインデックスの更新は行っておらず
しかもクライアントコピーやレコード削除を数多く実施しております。
DBはSQLserverを使ってます。
参考
CE2※※※※のテーブル
テーブル長:1263
レコード数:約30,000,000件
削除速度 :60件/秒
半分削除するのに丸3日(250,000秒)ほどかかります。
GLPC※については削除速度はもう少し速いです。
私自身あまりDBに詳しくないので、知見のある方がいらっしゃいましたらよろしくお願いいたします。
投票数:152
平均点:4.01
投稿ツリー
- テーブル削除の高速化 (ゲスト, 2012-6-12 18:18)