タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

SQLとOracleに関するnagasamaのブックマーク (3)

  • http://www.oracle.com/technology/global/jp/training/oraclemaster/index.html

  • OracleとDB2、ロッキング・メカニズムはこれだけ違う

    一方、DB2では、デフォルトのリードロックだけではほかのトランザクションからの更新を禁止するには十分ではありません。そこで、分離レベルを「繰返し可能読み取り」もしくは「直列可能」に変更する必要があります。これによって、検索結果行にはCOMMITあるいはROLLBACK時までロックをかけ、ほかのトランザクションからの更新を防ぎます。 排他制御が必要な場面でその都度、個々のSQL文にWITH句を用いて分離レベルを指定してください。例えば、上図3の場合は、以下のSQL文をカーソルオープン前に発行することで、レコードA~Dは、COMMITあるいはROLLBACK時までロックされた状態になります。

    OracleとDB2、ロッキング・メカニズムはこれだけ違う
  • パフォーマンスを向上させるSQLの記述法

    バインド変数化による解析情報の共有 前述の例1のようなSQLでは、異なる値を指定した処理が複数回行われた場合、WHERE句の条件列の値がリテラルで指定されているため(WHERE s_suppkey=1の部分)、改行の位置などを統一しただけでは同一のSQLとして解析されません。このような場合には、リテラル部分にバインド変数を使用することでSQLの記述を統一し、HARD PARSEを抑制することができます。 リテラルを使用したSQLとバインド変数を使用したSQLを1万回繰り返し行った場合にどのような違いが出るかを確認します。図2はリテラルで記述したSQLを実行、図3はバインド変数を使用したSQLを実行して取得したSQLトレース内のリカーシブコールに関する結果です。HARD PARSEの発生の有無によってリカーシブコールの発生回数に違いが現れています。 図2、図3の「Execute」はともに10

    パフォーマンスを向上させるSQLの記述法
  • 1