あるWebアプリケーションの一部の処理が、最近極端に処理が遅くなったと感じているものがあります。
アプリケーションの仕様も変えていない(確実とは言えません)と思いますので、OracleDB側(チューニング)の問題ではないかと疑っております。
いろいろチューニングについて調べたところ、まず「データ・ブロック数を減らす」という点を確認しようと思っています。
無駄なブロック数を減らそうとした場合、暫定的な対応にはなりますが、一度データをtruncateしてからデータを再挿入すると、きれいな状態でデータブロックが再生成される、という認識でよいのでしょうか?
(一度truncateしても処理スピードが変わらない場合は、「データブロック」の問題ではない、という判断で良いでしょうか?)
逆に上記で変わらない場合は、DB側で確認すべき点・何か原因として怪しいと考えられる点はありますでしょうか?
宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
DBのパフォーマンスが悪くなった場合は、
1. アナライズを実行する。
2. SQLの見直しをする。
SQL trace を取って、FULL SCANしているような
SQL を見直す。
3. DBのチューニングをする。
というような感じです。
DB自体のチューニングを行う前に、アナライズをしたほうが
いいです。(対して手間がかからないので)
OracleDBは、検索パスを決めるのに、COSTベース オプティマイザ
を使用しています。
そのCOSTを決定するのに、統計情報を使用します。
統計情報は、テーブルの件数やばらつきなどの情報です。
その統計情報を収集するのが、アナライズです。
古い統計情報のテーブル、スキーマだと、
極端にパフォーマンスが悪くなる場合があるので
まず最初にしたほうがいいです。
No.3
- 回答日時:
アナライズは実行されていますか?
行っておりません。
(アナライズという言葉自体始めて聞きました・・・)
OracleDBを導入時(業者さんに依頼)に設定を行ってもらった
以降はホッタラカシ状態となってしまっていますので、
定期的に行わなくてはいけないことだと、全く行っていない、
ということになります。
まずは、ANALYZEコマンドについて勉強するようにしたいと思います。
取り急ぎ、試してみたほうが良い、コマンドなどありましたら、
ご指示いただけると幸いです。
知らないことが多すぎで1から勉強しないとマズい状態のようです・・・
No.2
- 回答日時:
データの更新(削除、追加も)を繰り返すことでデータが複数のブロックにまたがったりしてブロックの利用率が低くなることがあります。
TuncateしてImportすることで無駄な空き部分が詰まるために必要なデータを取得するためにスキャンするブロック数が減ります。
ってことで認識はあっていると思いますよ。
StatsPackは一度使うと簡単になるので是非勉強してみてください。
専用の表領域と専用のユーザーを作成し、sysで$ORACLE_HOME/rdbms/spcreate.sql を実行すればパッケージが作成されます。
その後、作成済みの専用ユーザーで
exec statspack.snap;
を2回実行し、今度は spreport.sql を実行。
パフォーマンスチューニングのマニュアルや、OiSC(サポート契約があれば)に情報が沢山有ります。
データが予想以上に増えている表とか無いですか?
ご回答ありがとうございます。
StatsPackはまだ実行できていません。
(マニュアルを見たところをそれほど難しくないように感じてはいますが、業者さんにOracleを導入をしてもらった状況でそれ以降は構成はほとんどイジっておらず、私自身も表領域の作成等も行ったことがないため、実際に行うのに躊躇しております。まず表領域等の勉強から始めないと・・・ といった状況です)
サポート契約もありますのでOiSCも参照可能です。
まずは勉強から・・・ といった状況です。
> データが予想以上に増えている表とか無いですか?
ここで言う”データ”とは、(1)レコードの数、それとも(2)1レコード内のデータ×レコード数 の(2)のほうですよね?
レコード数はあまり増えていませんが、1レコード内のデータ量は日々増えていますのでその辺は気にしております。(VARCHAR2で定義したカラム内のデータ)
よって削除・追加は頻度としては多くありませんが、更新の頻度は結構あります。
ただレコード数はどのテーブルも5000レコード程度なので、索引があればそれほど時間がかかるものではないように思われるのですが・・・
何かのタイミングで、索引から検索されなくなってしまった(全表走査になってしまった)ということはありえるのですか?
またブロックの利用率でここまで処理が遅くなるのか(今まで4秒程度で応答があった処理が、現在は10秒ほどかかっているので、違う原因があるのかもしれません。
ブロック数の問題でこれほどの違いは考えられるものですか?
No.1
- 回答日時:
tuncate→import を試す前にstatspackというキーワードを調査してください。
statspackではある2時点間の性能データを採取することが出来ます。
(1)statspack実行
(2)該当処理実行
(3)statspack実行
で(1)と(2)の間でどのような処理が実行されたかを確認出来ます。
まず暫定対応を行う前の状況を確認し、対応後のレポートと比較することで改善された場合の原因が特定できます。
データ量の変換に伴い実行計画が変化したことが考えられますが、まず現状の性能情報が必要です。
ありがとうございます。
そうですね、まずは原因を究明するためにも状況を分析することを行うようにしたいと思います。
(statspackについてサラッと調べてみましたが、ちょっと難しそうな話なので、じっくり調べてから行うようにしたいと思います。)
また勉強の為に知りたいのですが、全てのデータを一度truncateしてからデータを再投入すれば、データブロックの状態はきれいになる、という認識は間違っていないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- BTOパソコン ドスパラのサポート対応に少し不信感があります。 ドスパラのガレリアを購入してから3ヶ月でゲームプレイ 8 2023/03/23 22:00
- 発達障害・ダウン症・自閉症 中学の時にIQ82の境界知能と診断されました。 今の私も、やはり境界知能でしょうか? そしてこれは、 3 2023/02/19 00:37
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- 医療・安全 塩野義製薬の新型コロナ治療薬「ゾコーバ」の緊急承認見送り 7 2022/07/22 00:45
- IT・エンジニアリング 不具合の現状認識をしないプログラマって信用できる人? できない人? 8 2023/07/28 09:09
- その他(悩み相談・人生相談) お客様は神さまとか言うけど閉店後に電気消えてる中ネットをくぐって入ってきて普通に使ってたけど割れたか 1 2022/09/13 00:24
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- 薬剤師・登録販売者・MR 変更調剤について 1 2022/05/22 11:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
WHERE句はJOIN結合前結合後どち...
-
likeとsubstrの使いわけについて
-
Like文の速度について教えてく...
-
Selectの処理速度改善について
-
前方一致で索引(インデックス...
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
Transact-SQLでストアードプロ...
-
エクセルVBAでUserFormを起動し...
-
SQLserver算術オーバーフロ...
-
ストアドプロシジャからストア...
-
Statement ignored というエラー
-
ODBCリンクの際にACCESSでは読...
-
SQLで部分的にGROUP BYしたいとき
-
sqlのwhere句で下記の条件にし...
-
PL/SQLカーソルの2重FORループ...
-
全角空白のTRIMができない...
-
テーブルの主キーをdate型...
-
Excel VBAで「プログラム実行」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
likeとsubstrの使いわけについて
-
WHERE句の実行順序
-
Like文の速度について教えてく...
-
WHERE句はJOIN結合前結合後どち...
-
ヒント句が無効になります
-
JOINの時のONとWHEREの違いにつ...
-
あいまい検索のパフォーマンス...
-
アナライズでほとんどの処理が...
-
SQL ORDER BYにおける条件について
-
800万件のテーブル読み込み...
-
問題解決のストーリーにて PDCA...
-
実行計画HASH JOIN RIGHT OUTER
-
oracleのanalyzeと処理時間につ...
-
PDCAを回すって?
-
【チューニング】インデックス...
-
Oracleで検索すると、フリーズ...
-
Oracle 実行計画、統計情報の見方
-
OEMで負荷の少ないSQLの実行計...
-
データ抽出の速度について
おすすめ情報