- 締切済み
チューニングのこつ
大雑把すぎるかもしれませんが、 アプリケーションチューニング パラメータチューニング SQLチューニング のポイントみたいなのがあれば、教えてください。 よろしくです。 それと、 作成したオブジェクトのシンプルな確認方法も知っておきたいと思います。 オブジェクト作成時に、エラーメッセージが返ってこなかったので「それでよし」ということではなく、 例えば、シノニムを作成したら、スキーマ指定なしで見れるとか、 シーケンスを作成したら、..... パッケージを作成したら、..... インデックスを作成したら、など、種類に応じて、妥当な確認方法があると思います。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- t_nojiri
- ベストアンサー率28% (595/2071)
>カーソル 作る時のSELECTの範囲や、データベースのカーソル存在中の参照ロックだろうなとは想像付くんですが、本当にトランザクション中にデータを書き換えられない様に保障しなくてはならないケースだと、カーソルの処理を止めろってアドバイスは無しでは? #カースバイケースですよね?
- sajikagen
- ベストアンサー率100% (1/1)
No3へのNo2の補足。 40~100万行くらいのテーブルを6年くらい扱っていて、アプリやSQLの性能には常に気を使う環境にいるのですが、経験的に速いです。 理屈はよくわかりません。 例えば、縦に品目、日付別にならんだ明細数量を、月ごとに横に加算していく処理などが速いです。 ダメSQLに書き直しても速くはなりませんが。
- t_nojiri
- ベストアンサー率28% (595/2071)
>>アプリケーションチューニング >ループやカーソルで処理しているところを極力SQL処理にする。 これが、何で効果があるのか補足願えますか? #oo4oとかに書き換えるなら判りますが、SQLにしたら 逆にオーバーヘッド食うケースの方しか思い浮かばない。
- sajikagen
- ベストアンサー率100% (1/1)
>アプリケーションチューニング ループやカーソルで処理しているところを極力SQL処理にする。 処理するレコードを極力少なくできるようにする。 ごむたいなupdate文を insert文に書き換える。 >パラメータチューニング DBバッファ、ログバッファの大きさをでかくする。 (効果が大きいのはredoログ周りくらいなもん) >SQLチューニング インデクスがひけてるか確認する。 (is null検索、OR検索などをやめる) テーブルの結合順序で速度が変わるのでチェックする SQLチューニングについていえば、これ以外にもたくさんあるけど、大雑把に言えばこんな感じ。 速度を向上する上で効果があるのは アプリケーションチューニング 50% SQLチューニング 45% パラメータチューニング 5% って感じ。
- t_nojiri
- ベストアンサー率28% (595/2071)
>大雑把すぎるかもしれませんが、 その通り。 資格が、シルバー、ゴールド、プラチナに分かれるくらいデータベースのチューニングは複雑で難しいです。 大体、どういうところにどういうパラメタ変えるかで、一時的には良くなっても運用していくうちに不都合起きるとかも有るし。