データベース・エンジニアだけでなく、プログラマもおさえておきたい基礎知識 オラクルの構造・高速化のギミック |
-
2つの副問い合わせの違い ( IN ... EXISTS ...)
-
副問い合わせで次の 2 つを良く見かけるが IN ( <副問い合わせ> ) と EXISTS ( SELECT 〜) 果たして何が違うのだろうか...
(詳細へ...)
|
-
ダイレクト・パス・インサート
-
データベースバッファを経由せず、超高速でデータをインサートさせるための方法である。しかし思わぬ落とし穴も存在する。
(詳細へ...)
|
-
ROWID スキャンより高速なアクセスパス
-
ROWID スキャンによるアクセスが、あらゆるケースで最適なアクセスパスであると思われていることがある。これは正しい情報ではない。というよりもマニュアルの表現を一部を省いて覚えられている事が多いので、大きな誤解である。ということにしておこうと思う。
(詳細へ...)
|
-
日付型と日付文字列型の違い
-
理想的には 日付型と日付文字列(整数)はデータドメインで使い分ける。日付型は日付文字列を拡張したデータドメイン。すなわち、いくつかの制約と専用メソッドを持った データドメイン と考えることができる。もし簡単に使い方を分類するならば。
(詳細へ...)
|
-
ALTER TABLE SHRINK と ALTER TABLE MOVE の違い
-
SHRINK 操作は Oracle 10g からの機能であり ONLINE 実行できるなどの特長から非常に有用であるが、弱点がいくつかあるようにみえる。 Oracle 10g R1 においては、それらの弱点を人手で助け、回避することによって、SHRINK による効果は相当に向上すると思われる。
(詳細へ...)
|
-
DELETE & INSERT と UPDATE の違い
-
DELETE、INSERT と UPDATE で同じような処理を書いた場合、どちらが効率がよいのだろうか? 結論から先に言うと、UPDATE の方が DELETE 〜 に比べ処理が少なく、格納効率の悪化が発生しにくい…
(詳細へ...)
|
-
TRUNCATE と DELETE 処理の違い
-
TRUNCATE TABLE 操作は、データの件数の関係なく非常に高速にデータを削除することができる。DELETE 操作と、どこが違い何か障害となるのか...
(詳細へ...)
|
-
TRUNCATE と DROP TABLE 処理の違い
-
DELETE と TRUNCATE の違いは前述のとおりである。それでは TRUNCATE と DROP TABLE にはパフォーマンスや運用からみて何が違うのか...
(詳細へ...)
|
-
CASE 式 と DECODE 関数の違い
-
ANSIの CASE 式とオラクル特有の関数 DECODEは、ほぼ同じ機能をもつが、この2つは NULL 値 の取り扱い方で大きく異なっている。...
(詳細へ...)
|
-
CASE 式 と CASE 文の違い
-
CASE 式と CASE 文を混同されていることが良くあるが、文言から明らかなのが記述する場所の差である。値を戻す式なのか、ステートメント(文)を実行するかの違いである。しかし、それだけではない。...
(詳細へ...)
|
-
表ロックの種類と相互関係
-
共有ロックは参照を行う際に掛けるロックである。しかし SELECT の度にロックを掛けているわけではなく、データや表定義が変更されると困る操作のときにだけ掛けられる。排他ロックは更新を行なう際に掛けるロックである。
(詳細へ...)
|
-
データベースを特定する名前、なぜ様々な呼び名があるのか
-
システム識別子、SID、インスタンス名、グローバルデータベース名、ネットサービス名。Oracle のデータベースをあらわす言葉は非常に多い、正直持て余して混乱するくらいほどある。なぜこんなに多いのか?
(詳細へ...)
|
-
インスタンスとプロセス
-
オラクルは大きく分けるととユーザ・プロセス、サーバ・プロセス、オラクル・サーバで構成されており、そのうちのオラクル・サーバは、 オラクル・データベースとインスタンスの2つで構成されている。
(詳細へ...)
|
-
インデックス・スキップ・スキャンの実力
-
Oracle 8i 以前は複合インデックスの第1キーをWHEREに持たない検索はインデックスを使用できなかった。 ...
(詳細へ...)
|
-
NULL 値の再認識
-
NULL 値は要所において特別な振る舞いをする。それを知らないでおくと、副問い合わせなどでデータを消す時限爆弾式の不具合を抱えることになる。
(詳細へ...)
|
-
知ってて知らない? SYSDATE SYSTIMESTAMP
-
SYSDATE 何の気なしに使用しているが、実は 調べてみると一番リソースを消費している関数だったということは少なくない。ユーザSQLではもちろん、内部のSQLでも頻繁につかわれる。オラクルで最も使用されている関数の1つと言っていいはず。なのに...
(詳細へ...)
|
-
PCTFREE と PCTUSED … PCTFREE + PCTUSED = 100
-
PCTFREE + PCTUSED ≒ 100 の状態はフリーリストの編集作業が頻繁になる。つまり、新規レコードで満たされているデータブロック(つまり PCTFREE まで満たされている) に対してレコード長が短くなる更新を行なうと、わずかな減少によってフリーリストに登録されることを意味する。
(詳細へ...)
|
-
表定義でのカラムの並び順による影響
-
カラム数が多い表の場合、表定義のカラムの順番を見かけ上の軽微な問題として何の考慮せず物理設計を行なっていることが多い。 OLTP ではカラム数も少なくレコード数も百万件程度なので数秒〜長くても10数秒程度の差になる。しかし…
(詳細へ...)
|
-
複合インデックス (複合主キー) の並び順と検索速度
-
オラクルのインデックス、すなわち、デフォルト時のインデックスは B-Tree インデックスになる。B-Tree による複合インデックスの場合、その並び順によって検索時のコストや実行計画にもは大きく影響する。
(詳細へ...)
|
-
簡単なパフォーマンスチューニング
-
統計情報をメンテナンスすることや実行計画を活用して SQL の速度をアップする方法。
(詳細へ...)
|
-
Oracle 8、8i、9i、10g の違い
-
Oracle はメジャーなバージョンアップ毎に多くの改良点が加えられてリリースされる。そのごく一部であるが違いを知る
(詳細へ...)
|
-
CBO の統計情報と動的サンプリング
-
動的サンプリングとは統計情報が無効化された表や、まだ統計情報が存在していない表に対してアクセスするとコストベース・オプティマイザに必要な統計情報が動的にサンプリングされて共有メモリ上に仮の統計情報として利用される機能である。
(詳細へ...)
|
-
代表的なオラクルのエラーの対処方法
-
ORA-xxxxx シリーズの FAQ (Answer に当たりはずれあり)
|