SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SQL チューニング編1 - チューニングの方向、プログラムチューニング

Oracle 固有の部分があるかもしれません。SQL-Server、MDB では注意のこと。

■チューニングの方向

  ・RDBMS へのアクセスが LAN に留まるのか、WAN も含むのか、回線速度、デ
    ータベースサーバのパワーによって、チューニングの方向は変わってくる。
    10base-T や 100base-TX の LAN ならば、クライアントの負荷を高めること
    によってサーバ負荷を軽減すると言うのもひとつの方向である。
    また、低速回線を含むシステムでは、非同期アクセスを取り入れると効果が
    高い。更にサーバ側カーソルをできるだけ利用した方が良い。

  ・データベースそのもののチューニングより、パフォーマンスの高い DB 設計、
    無駄のないコードロジックを使用する方が結果としての効果は高い。

■プログラムチューニング

  ・プログラム面から見たチューニングは、
      1. 非同期アクセスを使用する
      2. SQL 構文は、全て大文字で発行する
      3. 更新には、rowid を使用する
      4. 特別なロールバックセグメントを使用する
      5. where 句、order by 句に索引項目が含まれるようにする
      6. サーバ側カーソルを使用する
      7. レコードセットは、スタティック・フォーワードなど速いものを使う
      8. パラメタクエリ、ストアドプロシジャなど有効に使用する
    などである。

  ・非同期アクセスは、エラー判断、ロールバック処理などが複雑になる。
    単純な処理では、それほど効果がでない。
    サーバ側のレスポンスに時間のかかる処理で、且つ、その間にクライアント
    プログラムで処理できる内容があれば効果を発揮する。

  ・Oracle の内部は英字を大文字で管理しているので、SQL 構文を大文字で発
    行すると余計な内部変換をしないため速くなる。

  ・rowid は、レコードの位置を一意に管理しているシステム隠し項目である。
    select 時に rowid を引き取っておき、更新の where で rowid を指定する
    と最高速の更新となる。

  ・ロールバックセグメントは、トランザクション中のレコードが多い場合、特
    別な大きさのものを使用すると処理が速くなる。
    使用可能なロールバックセグメントは、
      select * from dba_rollback_segs;
    で調べられる。
    特別なロールバックセグメントを使用するには、
      set transaction use rollback segment test_seg;
    と指定する。
    読み込み専用のトランザクションを指定するには、
      set transaction read only;
    とする。
    どちらも、commit; または、rollback; すると解除されるので、トランザク
    ション単位に指定する。

  ・where 句、order by 句に索引項目が含まれていないと全レコードを検索す
    ることになる。また like などで中間一致を行っては索引の効果はでない。
    更に || や substr など索引項目を加工しての where でも索引の意味がな
    くなるので注意する。

  ・プログラムでレコードセットを取得する際、様々なカーソルセットが指定で
    きる。後方バックなど高度なカーソルほど処理は遅い。
    また、カーソルにはクライアント側カーソルとサーバ側カーソルがある。
    基本的にサーバ側カーソルの方が処理は高速である。

  ・特定の条件でレコードセットを得る場合、パラメタクエリを上手く利用する。
    毎回 SQL 文を発行するより高速である。

■SQL-NET、NET8

  ・Oracle8 では、NET8 が標準であるが、SQL-NET でも違和感なく操作できる。
    但し、Oracle8 の一部の機能については NET8 接続でないと利用できない。
    また、旧の SQL-NET を利用したプログラムの一部では NET8 で問題が出る
    と聞いている。(私の開発したものでは、互換問題は発生しなかった。)

■SQL チューニング編資料
■SQL 基礎実地編資料
■SQL 基礎編資料
■Oracle PL/SQL 編資料
■PostgreSQL 編、JAVA Servlet、JSP 編資料
■MySQL 編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2024 Y.SAK