お世話になります。
以前とある現場で、帳票を出力するのに30分以上かかるという障害があました。
(Oracle Database 11g)
原因はデータ取得部のSQLだったので、開発元に問い合わせてみたところ開発環境では数秒で出力されるとのこと。
調査を進めていったところ結合順序がデータが大量にあるテーブル→マスタの順になっていたため、
実環境では性能がガタ落ちしていました。
HINT句で結合順序を入れ替えたところ、帳票出力が30分→3秒に改善しました。
開発環境ではそこまでのデータ量がないため、再現しなかったということのようです。
昔話が長くなってしまいましたが、
最近、実際に開発を行うときには、
- 実環境のデータがどの程度の量なのか?
- どの程度の性能が要求されるのか?(性能指標が示されている場合除く)
- 日々何件程度のレコードが挿入/更新され、保持期間はどのくらいなのか?
等の情報が不明なまま開発を行うこともありました。
先に示した前例から、テーブルのアクセス順には気を使うようになりましたが、
実環境と開発環境のデータ差異による性能低下に対して
どのように製造Pで対応していけばよいか、悩んでいます。
みなさんがSQL作成する際、性能面で意識していることがあれば教えていただきたいです。
製造Pだけでなく、テストPで実施していること(データ構造、データ量・・・)でも歓迎です。
よろしくおねがいします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/15 06:22