How simple mistake can cripple your database
検証を交えてわかりやすく解説してくださるのでとてもわかりやすいです。
直近では、私の参加しそこねたOOW(OracleOpenWorld)の参加レポートを
配信してくれています。
また、INDEXの内部動作について丁寧に解説された書籍も出版されています。
書籍では、INDEXの行連鎖、行移行、BLOCK LEVEL LOCK、BITMAP INDEXについて
丁寧に検証を交えて解説くださっています。
-----------------------------------
あなたは、まだORACLEの本当の実力を知らない!!
ORACLEの内部がわかれば問題解決能力が格段にUPします!
通信業界で現役DBAをしている発行者がお届けするORACLEテクニック
メルマガ「ORACLE技術研究所」
http://www.mag2.com/m/0000126828.htm
書籍「Oracleはこう動いている。―Oracle徹底検証」
http://www.amazon.co.jp/exec/obidos/ASIN/4434071610/qid=1133577776/sr=1-1/ref=sr_1_0_1/503-8733354-6830309
-----------------------------------
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語で Oracle! #030 2006/12/01
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
今までの目次です。
http://imoment.blogspot.com/2006/11/toctable-of-contents.html
こんにちは^^
本日も読んでくださりありがとうございます。
また、新しく購読くださった皆様、はじめまして。
今回は新規購読者様が多数いらっしゃるので少し緊張しています。
めっきり寒くなりましたね。私は耳の冷え性で悩んでいたのですが、
今年の冬はとうとう耳当てを使うことにしました(^-^)
傍目にはヘッドホン風なので、恥ずかしさ半減です。
少し前の話になってしまいましたが、Oracle Open World 2006の
全セッションのプレゼンテーションスライドが誰でもダウンロード
可能になりました。
http://www28.cplan.com/cc139/catalog.jsp
正確には数えていませんが、1500を遥かに超えるセッションが
あったようです。会場が不足で広場でまでセッションをしたとか(笑)
人口80万人のサンフランシスコに約6万人のオラクラーが
結集したとのことで、想像するだけで壮絶な状況ですね。
数あるセッションスライドの中から、Don Burlesonさんの
スライドをご紹介したいと思います。
Don Burlesonさんについては以前の「PGA_AGGREGATE_TARGETの秘密」
の回でご紹介しました。有~~名な方ですね。
#021 【Undocumented secrets for super-sizing your PGA】
http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html
今回のスライドは、彼の長年に渡るDBコンサル経験を
盛り込んだ内容になっています。
気になった部分を抜粋して引用させていただきました。
Oracle用語続出ですが、できる限り解説いたしました。
その為にかなりのボリュームになってしまいましたが、
適当に気になる部分をピックアップしてご覧下さい。
■ ORACLE OPEN WORLD CATALOG SEARCH
Username: cboracle
Password: oraclec6
http://www28.cplan.com/cc139/catalog.jsp
■ 引用PDFファイル
Username: cboracle
Password: oraclec6
http://www28.cplan.com/cbo_export/PS_S283525_283525_139-1_FIN_v1.pdf
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記事本文
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ How do brain cramps happen?
・ Legacy systems(no FBI's, no MV's, 3NF tables)
・ Offshore bargain systems(amazing incompetence) See "Oracle WTF" for hilarious details.
・ Systems ported from other databases(SQL Server,MySQL,PostageSQL)
・ ERP's - Multi-platform products are not optimized for Oracle
◆ System-level Tuning Comes First!
System-level changes can reduce individual transaction tuning:
・ Adding indexes (especially function-based indexes)
・ Changing the SQL optimizer
・ Using Materialized Views
・ Improving CBO statistics (custom histograms, system stats)
・ Caching high-use, small tables & indexes (KEEP Pool)
・ Tune the library cache (cursor_sharing, etc)
・ Adjust segment structure (Multiple blocksizes, Sorted hash cluster tables)
◆ Relieving Server-side Brain Cramps:
・ Look at TPC benchmarks for your server
・ Many hidden parameters can make a big difference
・ This HP world-record benchmark took advantage of Oracle "undocumented" parameters:
_in_memory_undo=false
_cursor_cache_frame_bind_memory = true
_db_cache_pre_warm=false
_check_block_after_checksum = false
_lm_file_affinity
◆ Using direct I/O:
・ Solaris - Look for a "forcedirectio" option.
・ AIX - Look for a "dio" option.
・ Veritas VxFS - (for HP-UX, Solaris and AIX),
set "convosync = direct". It is also possible to enble
direct I/O on per-file basis using Veritas QIO using
the "quistat" command
・ Linux - Linux systems support direct I/O on a per-filehandle
basis (which is much more flexible), and Oracle enables this
feature automatically.
◆ Nightly Batch Processing
・ Import batch system stats
・ Super-large PGA can reduce runtimes by 8x
・ Override 5% limit with _pga_max_size
・ Often supplemented with use_hash hint
alter system set pga_aggregate_target = 6G;
alter system set "_pga_max_size" = 2000000000;
and I gave the query some hints "NOREWRITE FULL USE_HASH ORDERED".
As a result, it boosted my query performance from 12 hours to 1.5 hour.
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語の解釈
※自然な語順で解釈する癖をつけるために敢えて不自然な日本語に
なっているところがあります。 ()書きは後続修飾節の修飾対象です。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ How do brain cramps happen?
恥ずかしい間違いはどのようにして起こるのか?
・ Legacy systems(no FBI's, no MV's, 3NF tables)
レガシーシステム
(ファンクション索引やマテリアライズドビューがなく、第3正規化されている)
・ Offshore bargain systems(amazing incompetence)
オフショアの安いシステム(驚くべき低スキル)
See "Oracle WTF" for hilarious details.
"Oracle WTF"というサイトを見れば大笑いできる詳細が確認できます。
・ Systems ported from other databases(SQL Server,MySQL,PostageSQL)
他のDBから移行したシステム(SQL Server,MySQL,PostageSQL)
・ ERP's - Multi-platform products are not optimized for Oracle
ERPのマルチプラットホーム製品はOracle向けの最適化がされていません。
◆ System-level Tuning Comes First!
システムレベルのチューニングが最優先
System-level changes can reduce individual transaction tuning:
システムレベルの変更は個別トランザクションのチューニングを減らすことができます。
・ Adding indexes (especially function-based indexes)
インデックスの追加(特にファンクション索引)
・ Changing the SQL optimizer
SQLオプティマイザの変更
・ Using Materialized Views
マテリアライズドビューの使用
・ Improving CBO statistics (custom histograms, system stats)
CBO統計情報の改善(特別なヒストグラム、システム統計)
・ Caching high-use, small tables & indexes (KEEP Pool)
頻繁に利用されるデータ、小さなテーブル、インデックスのキャッシング(KEEP Pool)
・ Tune the library cache (cursor_sharing, etc)
ライブラリキャッシュの調整(cursor_sharing他)
・ Adjust segment structure (Multiple blocksizes, Sorted hash cluster tables)
セグメント構成の調整(複数ブロックサイズ、ソート済みのハッシュクラスタ)
◆ Relieving Server-side Brain Cramps:
サーバサイドの恥ずかしい間違いの救済
・ Look at TPC benchmarks for your server
自分のサーバのTPCベンチマークを確認する。
・ Many hidden parameters can make a big difference
沢山の隠しパラメータは大きな違いを生み出せます。
・ This HP world-record benchmark took advantage
以下のHP世界レコードベンチマークはアドバンテージを得ています。
of Oracle "undocumented" parameters:
オラクルの非公開パラメータの
_in_memory_undo=false
_cursor_cache_frame_bind_memory = true
_db_cache_pre_warm=false
_check_block_after_checksum = false
_lm_file_affinity
◆ Using direct I/O:
ダイレクトI/Oの使用
・ Solaris - Look for a "forcedirectio" option.
Solaris - "forcedirectio"オプションを探してください
・ AIX - Look for a "dio" option.
AIX - "dio"オプションを探してください。
・ Veritas VxFS - (for HP-UX, Solaris and AIX),
Veritas VxFS (HP-UX, Solaris, AIXで使用されています),
HP-UX set "convosync = direct".
HP-UXなら"convosync = direct"をセットしましょう。
It is also possible
それはまた、可能です。
to enble direct I/O on per-file
ファイル単位のダイレクトI/Oを有効にすることが(可能です)
basis using Veritas QIO using the "quistat" command
Veritas QIOで"quistat"コマンドを使用することに基づいた
(ファイル単位のダイレクトI/Oを可能にします)
・ Linux - Linux systems support direct I/O
Linux - LinuxシステムはダイレクトI/Oをサポートしています。
on a per-filehandle basis
ファイルハンドルに基づいた
(which is much more flexible),
(より柔軟な),
and Oracle enables this feature automatically.
そしてOracleはこの機能を自動的に有効にします。
◆ Nightly Batch Processing
夜間バッチ処理
・ Import batch system stats
バッチ用のシステム統計のインポート
・ Super-large PGA can reduce runtimes by 8x
超巨大PGAは実行時間を8割減らすことができます。
・ Override 5% limit with _pga_max_size
_pga_max_sizeによる5%制限の上書き
・ Often supplemented with use_hash hint
しばしば"use_hash"ヒントが補足されます。
alter system set pga_aggregate_target = 6G;
alter system set "_pga_max_size" = 2000000000;
and I gave the query some hints "NOREWRITE FULL USE_HASH ORDERED".
As a result, it boosted my query performance from 12 hours to 1.5 hour.
結果として、それは私のクエリパフォーマンスを12時間から1.5時間に改善しました。
------------------------------------------------------
★ 英語の語順での解釈の元祖はこちら
SIM:スーパーエルマー
http://jpan.jp/?simurl
通常の体験CDよりも豪華な体験版CDが手元にあるので
ご希望の方はこのメールのreplyにて希望の旨お知らせ下さい。
また上記リンクから無料体験版CDを申し込まれた方も
アフィリエイト報酬分をお送りしますのでお知らせ下さい。
------------------------------------------------------
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ How do brain cramps happen?
※brain cramps:恥ずかしい間違い。類似語でbrain fart(脳のおなら)
という俗語もありますが、こちらは場の流れを無視した
おマヌな発言や行動を指します。
Legacy systems(no FBI's, no MV's, 3NF tables)
※Legacy systems:メインフレームなど、既存の古いシステム
FBI:function-based indexes(略称だと少しかっこいいですね)
通常の索引が列を指定するのに対し、関数や式を用いた索引を指します。
詳細は「Oracle解説」のコーナーで解説いたします。
MV :materialized view
通常のviewがselectする度に元となるテーブルに実際にアクセスするのに対し、
アクセス結果をsnap shotとして保存しておき、そのsnap shotへアクセスする
viewを指してマテリアライズドビューと呼びます。
詳細は「Oracle解説」のコーナーで解説いたします。
3NF:3rd normalized form 第3正規形のことです。
一昔前はむやみに第3正規形を用いることがありましたが、
JOINが多くなりパフォーマンスに影響してしまいます。
必要な場合は第2正規形のままでパフォーマンスを優先することが
よくあります。(特にData Ware Houseの場合)
Offshore bargain systems(amazing incompetence)
※Offshore systems:海外の人件費が安い国に構築を委託したシステム
インド・中国が代表的ですが、意思疎通問題で
結局作り直しになり高くつくことが良くあります。
Changing the SQL optimizer
※optimizer:SQL文の結果に最も効率よくアクセスする為のアクセス方法を考えてくれる
オラクルの機能です。
Improving CBO statistics (custom histograms, system stats)
※CBO:Cost Based Optimizer
optimizerにはcost baseとrule baseがあります。
(rule baseは10gからサポート対象外になりました)
両者の違いについては、第2号で解説しています。
http://imoment.blogspot.com/2006/11/virtual-indexes-in-oracle_116282389528518054.html
statistics:統計情報。optimizerがアクセス方法を考える為の判断材料が格納されています。
histograms:棒グラフ。Oracle上でのヒストグラムは統計情報の一部で、
列の内容の分布情報が保存されています。
system stats:システムの統計情報です。
この他、テーブルやインデックスなどの統計情報があります。
Tune the library cache (cursor_sharing, etc)
※library cache:SQL文や実行計画などが格納されています。
詳細は「Oracle解説」のコーナーで解説いたします。
cursor_sharingについては、14号で解説しています。
http://imoment.blogspot.com/2006/11/what-is-your-experience-with_07.html
Adjust segment structure (Multiple blocksizes, Sorted hash cluster tables)
※segment:テーブルやインデックス等を記憶域の観点で表す場合にセグメントという
言葉を使います。
multiple blocksizes:9iからの機能で、1つのDBで複数のブロックサイズを
共存させることができます。8i以前はデータベースのブロックサイズは
統一されていなければなりませんでした。
cluster tables:頻繁に結合する2つ以上の表を効率良く検索する為に、結合キーを
クラスタキーとして定義し、同一のクラスタキーを持つ複数テーブルの各行を
同一のブロックに格納する仕組みです。効率良いブロックアクセスで結果を
取得することができます。ただしブロックサイズ以上のデータが同じキーで
存在する場合はクラスタ表を使用しない方が早い場合があります。
また、クラスタキーが更新される可能性がある場合もクラスタ化は向いていません。
更新された行は別のブロックへ移動する必要がある為です。
hash cluster tables:通常のクラスタ(索引クラスタ)に対し、クラスタキーに
ハッシュ関数を適用した結果に紐づいたブロックに格納されるので、
特定の値を検索する際にはその検索キーにハッシュ関数を適用するだけで
ブロックの場所がわかってしまうので便利です。
Sorted hash cluster tables:クラスタ表へのアクセスがsortを伴う場合、
sort済みのハッシュクラスタを定義することでアクセス時間が改善されます。
Look at TPC benchmarks for your server
※TPC:TPCはTransaction Processing Performance Councilの略です。
コンピュータの処理性能を評価するための評価ルールを定める団体です。
主にTPC-Cというルールで1分間のトランザクション件数を競います。
benchmark:比較する為のレベル、またはそのレベルを採取すること
主にITの世界では、コンピュータの性能を比較する為の性能測定値を指す。
現在のTPC-CのTOP10はこちらです。
http://www.tpc.org/tpcc/results/tpcc_perf_results.asp?resulttype=all&version=5¤cyID=0
この中の情報についての説明は「Oracle解説」のコーナーで説明いたします。
◆ Using direct I/O:
※ここで言うダイレクトI/OとはOSのバッファキャッシュを経由せずに
ディスクにアクセスすることを指しています。
詳細は「Oracle解説」のコーナーで解説いたします。
Solaris:Sun MircrosystemsのUNIXです。
AIX:IBMのUNIXです。
HP-UX:HPのUNIXです。
VxFS:Veritas社(現symantec)のファイルシステムです。
It is also possible to enble direct I/O on per-file basis
using Veritas QIO using the "quistat" command
※vxfsのquick I/O機能を利用して、ファイルをrawデバイス化する
ことができます。
Super-large PGA can reduce runtimes by 8x
※PGAについては、21号の解説をご覧下さい。
http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html
Override 5% limit with _pga_max_size
※隠しパラメータ_pga_max_sizeについても、21号の解説をご覧下さい。
http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html
Often supplemented with use_hash hint
※use_hashヒントはハッシュ結合をoptimizerに指示します。
I gave the query some hints "NOREWRITE FULL USE_HASH ORDERED".
※norewriteヒント:query_rewrite_enableを無効にします。
fullヒント:フルスキャンをoptimizerに指示します。
orderedヒント:from句で指定した順に表を結合するようoptimizerに指示します。
INDEXについて学ぶなら読みたい本です。
http://www.amazon.co.jp/exec/obidos/ASIN/4434071610/qid=1133577776/sr=1-1/ref=sr_1_0_1/503-8733354-6830309
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
★ 英語ぷちクイズ ★
※答えと思うリンクをぷちっとクリックしてください。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
☆食べたものが美味しくて気に入った場合に使うとき、一般的なのはどちら?
◆I love it.
┗ http://clickenquete.com/a/a.php?M0002066Q0018291A1dcb0
◆I'm lovin' it.
┗ http://clickenquete.com/a/a.php?M0002066Q0018291A2c438
○結果を見る
┗ http://clickenquete.com/a/r.php?Q0018291C372b
締切:2006年12月08日18時00分
協力:クリックアンケート http://clickenquete.com/
こたえは次回に発表します。
------------------------------------------------------
★ ランキングにも一応参加しております
気が向いたらクリックお願いします。
「ブログ村、IT技術ブログランキング」
http://it.blogmura.com/in/080814.html
------------------------------------------------------
■ 前回のこたえ
☆なかま外れはどれでしょう
◆for instance
◆for example
◆e.g.
◆i.e.
○結果を見る
┗ http://clickenquete.com/a/r.php?Q0018009Cb2ec
答えはi.e.です。
他は全て(例)を意味していますが、i.e.は「すなわち」的なニュアンスで、
前述の説明を簡潔に言い換えたりする場合に使用します。
e.g.はラテン語のexempli gratiaの略で、
i.e.はラテン語のid estの略です。
ちなみにこんな言葉もラテン語の略です。
a.m. -> ante meridiem
p.m. -> post meridiem
etc. -> et cetera
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Oracle解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■ ファンクション索引(FBI:function-based indexes)
8iからの機能です。
以下の例のように関数を用いた検索式でもインデックスを使用することができます。
関数だけでなく、(b*10-1)のような式でもOKです。
create table table_x (aaa char(10),bbb number);
begin
for k in 1..1000 loop
insert into table_x values(k,1);
end loop;
commit;
end;
/
create index index_x on table_x (substr(aaa,1,2));
set autot trace
select aaa from table_x where substr(aaa,1,2)='10';
実行計画内に以下の行があることでindex_xが使用されたことがわかります。
* 2 INDEX RANGE SCAN INDEX_X 4 1 (0) 00:00:01
set autot off
drop index index_x;
create index index_x on table_x (aaa);
set autot trace
select aaa from table_x where substr(aaa,1,2)='10';
今度はindexが使用されず、FULL SCANが走ったことがわかります。
* 1 TABLE ACCESS FULL TABLE_X 12 144 2 (0) 00:00:01
■ マテリアライズドビュー
8iからこの名称で呼ばれるようになりました(その前はsnap shot)
シンプル(すぎる)例で感覚をイメージいただければと思います。
create table table_x (aaa char(10),bbb number);
create table table_y (ccc char(10),ddd number);
create materialized view mview_1
as select aaa,ccc from table_x a,table_y b
where a.bbb=b.ddd;
begin
for k in 1..1000 loop
insert into table_x values('abc',k);
insert into table_y values('efg',k);
end loop;
commit;
end;
/
--この時点ではリフレッシュされていないのでゼロ件です。
select count(*) from mview_1;
exec dbms_mview.refresh('mview_1','c');
--リフレッシュされたのでマージ結果がカウントされます。
select count(*) from mview_1;
この他、マテリアライズドビューログや集合関数付のマテビュー
fast refresh機能、クエリリライト機能、レプリケーションなど
突っ込んでいくとどんどん難しくなるのですが、別の機会に説明いたします。
■ ライブラリキャッシュ
ライブラリキャッシュも含めてOracleのメモリ構造を整理します。
SGA:システムグローバルエリア
│
├─ データベースバッファキャッシュ(実際のデータのキャッシュ)
│
├─ REDOログバッファ(REDOログ用のキャッシュ)
│
├┬ 共有プール(shared pool)
││
│├┬ ライブラリキャッシュ
│││
││├─ 共有SQL領域(SQL文のキャッシュ)
│││
││├─(共有サーバ構成の場合)プライベートSQL領域(バインド変数の内容等)
│││
││└─ その他
││
│└─ データディクショナリキャッシュ(データディクショナリのキャッシュ)
│
├─ ラージプール
│
├─ javaプール(javaコードやデータのキャッシュ)
│
└─ ストリームプール
PGA:プログラムグローバルエリア
│
├─(専用サーバ構成の場合)プライベートSQL領域
│
├─ SQL作業領域(sort作業等の領域)
│
├─ カーソル領域
│
└─(専用サーバ構成の場合)セッションメモリー
■ TPC-C ベンチマーク情報
恐らくBurlesonさんが仰っているHP world-record benchmarkとは以下のリンクの
benchmarkデータのことだと思います。
http://www.tpc.org/results/FDR/TPCC/HP%20Integrity%20rx5670%20Cluster%2064P_FDR.pdf
このbenchmarkは全体では5位で、Clusterシステムとしては、唯一のTOP10入りです。
上記ファイル内でも初期化パラメータが公開されていますが、
burlesonさんのピックアップされた隠しパラメータは以下の通りです。
_in_memory_undo=false
_cursor_cache_frame_bind_memory = true
_db_cache_pre_warm=false
_check_block_after_checksum = false
_lm_file_affinity
<_in_memory_undo=false>
10gからの新機能でありながら、公開されていないという
in memory undo(IMU)機能を無効にしています。
非クラスタ環境のbenchmarkの初期化パラメータでは特に無効にされていないので、
RACのキャッシュフュージョンなどでこの制御に問題があるということがあるのかもしれません。
in memory undoはCBC Latch(cache buffer chains latch)の競合を減らす為に、
本来データベースバッファキャッシュのUNDOセグメントを利用するUNDOデータを
共有プールの独立したimu_poolに切り替える機能です。(defaultで有効)
cache buffers chains latchとは、データベースバッファキャッシュ内に
どんなデータがあるのかを示すリストをロックするlatchです。
latchとは家のドアなどにかけるチェーンのことで、
Oracleのlatchは各メモリエリアをロックする為の鍵のような役割を持っています。
<_db_cache_pre_warm=false>
Buffer Cache Pre-warm機能はDB初期起動時にセグメントの最初のExtentデータを
キャッシュに読み込む機能が有効になっています。(10g新機能)
キャッシュのHIT率を最初から高めるためでしょうか。。。それを無効にしています。
その他のTOP10入りbenchmarkの初期化パラメータで気に止まったものをピックアップしました。
確認したのは以下のbenchmarkです。
<3位(Oracleで1位)IBM eServer p5 595>
http://www.tpc.org/results/FDR/TPCC/IBM_595_32_20050412_fdr.pdf
<5位(Oracle Clusterで1位)HP Integrity rx5670 Cluster Itanium2/1.5 GHz-64p/6>
http://www.tpc.org/results/FDR/TPCC/HP%20Integrity%20rx5670%20Cluster%2064P_FDR.pdf
<8位(Oracleで3位)HP Integrity Superdome ・Itanium2/1.5 GHz-64p/64c>
http://www.tpc.org/results/FDR/TPCC/hp_tpcc_sd_1mil_fdr.pdf
<10位(Oracleで4位)FUJITSU PRIMEQUEST 480 c/s>
http://www.tpc.org/results/FDR/TPCC/fujitsu_primequest480_tpcc_fdr.pdf
<_awr_restrict_mode=true>
名前そのままですが、awrの全機能を無効にします。
<_collect_undo_stats=false>
v$undostatへのundo統計取得を止めます。
<replication_dependency_tracking=false>
レプリケート環境でパラレルに変更を伝播する為の依存性追跡機能。
レプリケーションを使用しない環境ではdefaultのtrueのままにしておく
メリットが無さそうです。
<undo_retention = 1>
特に要件がない限り、undo_retentionは小さな値にして、undo表領域の無駄な拡張を
防止した方がよさそうです。
隠しパラメータの確認・更新方法は21号の解説欄でご紹介しています。
http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html
■ direct I/O
OracleのI/OパターンにはファイルシステムI/Oと、RAWデバイスI/Oが
あります。ファイルシステムI/OはOSのファイルシステムを経由して
データにアクセスするのに対し、RAWデバイスI/OはOSのファイルシステムを
経由せずにデータアクセスします。
最近はファイルシステムでも優れたパフォーマンス対策がなされており、
RAWデバイスにした方が早いとは言い切れません。またRAWデバイスは
OSファイルシステム上で管理できないので管理性に劣ります。
ファイルシステムI/Oの場合、Oracleのバッファキャッシュを経由して、
さらにOSのバッファキャッシュも経由し、最終的にディスクに到達するので、
2重のバッファを経由することがパフォーマンスに悪影響する場合があります。
OSファイルシステムにはそれぞれOSのバッファキャッシュを経由しない為の
オプションが用意されているので、これを活用することでOracleのパフォーマンスが
改善できるかもしれません。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
編集後記
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
今号からご購読いただいた皆様はじめまして。
本日も最後まで読んでいただきありがとうございます。
すごいことに 【 1 分で治る!あなたの通じない英語】のTomoさんが
有料版で発行している【1分で治る!あなたの通じない英語-Revo-】を
無料開放されました。しかも15000円の【恐怖の誤英語克服マニュアル】も
無料開放!!!創刊1周年記念ということなのですが、登録すれば、
期間無制限で購読できます。しかもこのメルマガ発行者は有料だそうです。
鼻血が出そうなサービスですね^^;
先週の土曜日、川江美奈子さんの「夜想フ会~瑠璃色の夜」に行ってきました。
http://minakokawae.blog.ocn.ne.jp/kawae/
嫁さんが自分のお友達だったのもあって、気合を入れて
整理券番号1,2番をゲットしてくれたので、
先頭の真正面で素敵な歌を聴くことができました。
幸いにもプロデューサーの武部聡志さんがゲストでpianoを弾いてくれたので
弾き語りでない歌に集中して歌う川江さんという珍しい物も聴く事ができました。
本人の欲が無いのもあって、実力や曲の完成度はものすごく高いのに、
まったくマイナーなので、ファンは熱心な方々ばかり。。。
コンサートが始まる前に聞こえてくるみなさんの川江さんに対する熱い
想いが本当にすごくて自分のことのように嬉しく少し涙が出てしまいました。
川江さんのあだ名は「ギャンちゃん」で、由来はガンダムのギャンに似ているから
とのこと。正面で見ていたら途中から「ギャン」にしか見えなくなり。
とても可笑しかったです^^
会場でお隣だった熱心なファンの方の川江さんブログです。
http://blog.goo.ne.jp/gyanchan/
それではまた。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
おわりに
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記述誤りなどのご指摘、
記事に関する疑問点・質問・感想・ご意見・ご感想など
yakusa_oracle@yahoo.co.jpまでお願い致します。
簡単な自己紹介はこちら
http://pr2.cgiboy.com/S/3191274
バックナンバー兼ブログはこちら
http://imoment.blogspot.com/
登録・解除はこちらから
http://www.mag2.com/m/0000200441.htm
直近では、私の参加しそこねたOOW(OracleOpenWorld)の参加レポートを
配信してくれています。
また、INDEXの内部動作について丁寧に解説された書籍も出版されています。
書籍では、INDEXの行連鎖、行移行、BLOCK LEVEL LOCK、BITMAP INDEXについて
丁寧に検証を交えて解説くださっています。
-----------------------------------
あなたは、まだORACLEの本当の実力を知らない!!
ORACLEの内部がわかれば問題解決能力が格段にUPします!
通信業界で現役DBAをしている発行者がお届けするORACLEテクニック
メルマガ「ORACLE技術研究所」
http://www.mag2.com/m/0000126828.htm
書籍「Oracleはこう動いている。―Oracle徹底検証」
http://www.amazon.co.jp/exec/obidos/ASIN/4434071610/qid=1133577776/sr=1-1/ref=sr_1_0_1/503-8733354-6830309
-----------------------------------
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語で Oracle! #030 2006/12/01
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
今までの目次です。
http://imoment.blogspot.com/2006/11/toctable-of-contents.html
こんにちは^^
本日も読んでくださりありがとうございます。
また、新しく購読くださった皆様、はじめまして。
今回は新規購読者様が多数いらっしゃるので少し緊張しています。
めっきり寒くなりましたね。私は耳の冷え性で悩んでいたのですが、
今年の冬はとうとう耳当てを使うことにしました(^-^)
傍目にはヘッドホン風なので、恥ずかしさ半減です。
少し前の話になってしまいましたが、Oracle Open World 2006の
全セッションのプレゼンテーションスライドが誰でもダウンロード
可能になりました。
http://www28.cplan.com/cc139/catalog.jsp
正確には数えていませんが、1500を遥かに超えるセッションが
あったようです。会場が不足で広場でまでセッションをしたとか(笑)
人口80万人のサンフランシスコに約6万人のオラクラーが
結集したとのことで、想像するだけで壮絶な状況ですね。
数あるセッションスライドの中から、Don Burlesonさんの
スライドをご紹介したいと思います。
Don Burlesonさんについては以前の「PGA_AGGREGATE_TARGETの秘密」
の回でご紹介しました。有~~名な方ですね。
#021 【Undocumented secrets for super-sizing your PGA】
http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html
今回のスライドは、彼の長年に渡るDBコンサル経験を
盛り込んだ内容になっています。
気になった部分を抜粋して引用させていただきました。
Oracle用語続出ですが、できる限り解説いたしました。
その為にかなりのボリュームになってしまいましたが、
適当に気になる部分をピックアップしてご覧下さい。
■ ORACLE OPEN WORLD CATALOG SEARCH
Username: cboracle
Password: oraclec6
http://www28.cplan.com/cc139/catalog.jsp
■ 引用PDFファイル
Username: cboracle
Password: oraclec6
http://www28.cplan.com/cbo_export/PS_S283525_283525_139-1_FIN_v1.pdf
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記事本文
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ How do brain cramps happen?
・ Legacy systems(no FBI's, no MV's, 3NF tables)
・ Offshore bargain systems(amazing incompetence) See "Oracle WTF" for hilarious details.
・ Systems ported from other databases(SQL Server,MySQL,PostageSQL)
・ ERP's - Multi-platform products are not optimized for Oracle
◆ System-level Tuning Comes First!
System-level changes can reduce individual transaction tuning:
・ Adding indexes (especially function-based indexes)
・ Changing the SQL optimizer
・ Using Materialized Views
・ Improving CBO statistics (custom histograms, system stats)
・ Caching high-use, small tables & indexes (KEEP Pool)
・ Tune the library cache (cursor_sharing, etc)
・ Adjust segment structure (Multiple blocksizes, Sorted hash cluster tables)
◆ Relieving Server-side Brain Cramps:
・ Look at TPC benchmarks for your server
・ Many hidden parameters can make a big difference
・ This HP world-record benchmark took advantage of Oracle "undocumented" parameters:
_in_memory_undo=false
_cursor_cache_frame_bind_memory = true
_db_cache_pre_warm=false
_check_block_after_checksum = false
_lm_file_affinity
◆ Using direct I/O:
・ Solaris - Look for a "forcedirectio" option.
・ AIX - Look for a "dio" option.
・ Veritas VxFS - (for HP-UX, Solaris and AIX),
set "convosync = direct". It is also possible to enble
direct I/O on per-file basis using Veritas QIO using
the "quistat" command
・ Linux - Linux systems support direct I/O on a per-filehandle
basis (which is much more flexible), and Oracle enables this
feature automatically.
◆ Nightly Batch Processing
・ Import batch system stats
・ Super-large PGA can reduce runtimes by 8x
・ Override 5% limit with _pga_max_size
・ Often supplemented with use_hash hint
alter system set pga_aggregate_target = 6G;
alter system set "_pga_max_size" = 2000000000;
and I gave the query some hints "NOREWRITE FULL USE_HASH ORDERED".
As a result, it boosted my query performance from 12 hours to 1.5 hour.
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語の解釈
※自然な語順で解釈する癖をつけるために敢えて不自然な日本語に
なっているところがあります。 ()書きは後続修飾節の修飾対象です。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ How do brain cramps happen?
恥ずかしい間違いはどのようにして起こるのか?
・ Legacy systems(no FBI's, no MV's, 3NF tables)
レガシーシステム
(ファンクション索引やマテリアライズドビューがなく、第3正規化されている)
・ Offshore bargain systems(amazing incompetence)
オフショアの安いシステム(驚くべき低スキル)
See "Oracle WTF" for hilarious details.
"Oracle WTF"というサイトを見れば大笑いできる詳細が確認できます。
・ Systems ported from other databases(SQL Server,MySQL,PostageSQL)
他のDBから移行したシステム(SQL Server,MySQL,PostageSQL)
・ ERP's - Multi-platform products are not optimized for Oracle
ERPのマルチプラットホーム製品はOracle向けの最適化がされていません。
◆ System-level Tuning Comes First!
システムレベルのチューニングが最優先
System-level changes can reduce individual transaction tuning:
システムレベルの変更は個別トランザクションのチューニングを減らすことができます。
・ Adding indexes (especially function-based indexes)
インデックスの追加(特にファンクション索引)
・ Changing the SQL optimizer
SQLオプティマイザの変更
・ Using Materialized Views
マテリアライズドビューの使用
・ Improving CBO statistics (custom histograms, system stats)
CBO統計情報の改善(特別なヒストグラム、システム統計)
・ Caching high-use, small tables & indexes (KEEP Pool)
頻繁に利用されるデータ、小さなテーブル、インデックスのキャッシング(KEEP Pool)
・ Tune the library cache (cursor_sharing, etc)
ライブラリキャッシュの調整(cursor_sharing他)
・ Adjust segment structure (Multiple blocksizes, Sorted hash cluster tables)
セグメント構成の調整(複数ブロックサイズ、ソート済みのハッシュクラスタ)
◆ Relieving Server-side Brain Cramps:
サーバサイドの恥ずかしい間違いの救済
・ Look at TPC benchmarks for your server
自分のサーバのTPCベンチマークを確認する。
・ Many hidden parameters can make a big difference
沢山の隠しパラメータは大きな違いを生み出せます。
・ This HP world-record benchmark took advantage
以下のHP世界レコードベンチマークはアドバンテージを得ています。
of Oracle "undocumented" parameters:
オラクルの非公開パラメータの
_in_memory_undo=false
_cursor_cache_frame_bind_memory = true
_db_cache_pre_warm=false
_check_block_after_checksum = false
_lm_file_affinity
◆ Using direct I/O:
ダイレクトI/Oの使用
・ Solaris - Look for a "forcedirectio" option.
Solaris - "forcedirectio"オプションを探してください
・ AIX - Look for a "dio" option.
AIX - "dio"オプションを探してください。
・ Veritas VxFS - (for HP-UX, Solaris and AIX),
Veritas VxFS (HP-UX, Solaris, AIXで使用されています),
HP-UX set "convosync = direct".
HP-UXなら"convosync = direct"をセットしましょう。
It is also possible
それはまた、可能です。
to enble direct I/O on per-file
ファイル単位のダイレクトI/Oを有効にすることが(可能です)
basis using Veritas QIO using the "quistat" command
Veritas QIOで"quistat"コマンドを使用することに基づいた
(ファイル単位のダイレクトI/Oを可能にします)
・ Linux - Linux systems support direct I/O
Linux - LinuxシステムはダイレクトI/Oをサポートしています。
on a per-filehandle basis
ファイルハンドルに基づいた
(which is much more flexible),
(より柔軟な),
and Oracle enables this feature automatically.
そしてOracleはこの機能を自動的に有効にします。
◆ Nightly Batch Processing
夜間バッチ処理
・ Import batch system stats
バッチ用のシステム統計のインポート
・ Super-large PGA can reduce runtimes by 8x
超巨大PGAは実行時間を8割減らすことができます。
・ Override 5% limit with _pga_max_size
_pga_max_sizeによる5%制限の上書き
・ Often supplemented with use_hash hint
しばしば"use_hash"ヒントが補足されます。
alter system set pga_aggregate_target = 6G;
alter system set "_pga_max_size" = 2000000000;
and I gave the query some hints "NOREWRITE FULL USE_HASH ORDERED".
As a result, it boosted my query performance from 12 hours to 1.5 hour.
結果として、それは私のクエリパフォーマンスを12時間から1.5時間に改善しました。
------------------------------------------------------
★ 英語の語順での解釈の元祖はこちら
SIM:スーパーエルマー
http://jpan.jp/?simurl
通常の体験CDよりも豪華な体験版CDが手元にあるので
ご希望の方はこのメールのreplyにて希望の旨お知らせ下さい。
また上記リンクから無料体験版CDを申し込まれた方も
アフィリエイト報酬分をお送りしますのでお知らせ下さい。
------------------------------------------------------
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
英語解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
◆ How do brain cramps happen?
※brain cramps:恥ずかしい間違い。類似語でbrain fart(脳のおなら)
という俗語もありますが、こちらは場の流れを無視した
おマヌな発言や行動を指します。
Legacy systems(no FBI's, no MV's, 3NF tables)
※Legacy systems:メインフレームなど、既存の古いシステム
FBI:function-based indexes(略称だと少しかっこいいですね)
通常の索引が列を指定するのに対し、関数や式を用いた索引を指します。
詳細は「Oracle解説」のコーナーで解説いたします。
MV :materialized view
通常のviewがselectする度に元となるテーブルに実際にアクセスするのに対し、
アクセス結果をsnap shotとして保存しておき、そのsnap shotへアクセスする
viewを指してマテリアライズドビューと呼びます。
詳細は「Oracle解説」のコーナーで解説いたします。
3NF:3rd normalized form 第3正規形のことです。
一昔前はむやみに第3正規形を用いることがありましたが、
JOINが多くなりパフォーマンスに影響してしまいます。
必要な場合は第2正規形のままでパフォーマンスを優先することが
よくあります。(特にData Ware Houseの場合)
Offshore bargain systems(amazing incompetence)
※Offshore systems:海外の人件費が安い国に構築を委託したシステム
インド・中国が代表的ですが、意思疎通問題で
結局作り直しになり高くつくことが良くあります。
Changing the SQL optimizer
※optimizer:SQL文の結果に最も効率よくアクセスする為のアクセス方法を考えてくれる
オラクルの機能です。
Improving CBO statistics (custom histograms, system stats)
※CBO:Cost Based Optimizer
optimizerにはcost baseとrule baseがあります。
(rule baseは10gからサポート対象外になりました)
両者の違いについては、第2号で解説しています。
http://imoment.blogspot.com/2006/11/virtual-indexes-in-oracle_116282389528518054.html
statistics:統計情報。optimizerがアクセス方法を考える為の判断材料が格納されています。
histograms:棒グラフ。Oracle上でのヒストグラムは統計情報の一部で、
列の内容の分布情報が保存されています。
system stats:システムの統計情報です。
この他、テーブルやインデックスなどの統計情報があります。
Tune the library cache (cursor_sharing, etc)
※library cache:SQL文や実行計画などが格納されています。
詳細は「Oracle解説」のコーナーで解説いたします。
cursor_sharingについては、14号で解説しています。
http://imoment.blogspot.com/2006/11/what-is-your-experience-with_07.html
Adjust segment structure (Multiple blocksizes, Sorted hash cluster tables)
※segment:テーブルやインデックス等を記憶域の観点で表す場合にセグメントという
言葉を使います。
multiple blocksizes:9iからの機能で、1つのDBで複数のブロックサイズを
共存させることができます。8i以前はデータベースのブロックサイズは
統一されていなければなりませんでした。
cluster tables:頻繁に結合する2つ以上の表を効率良く検索する為に、結合キーを
クラスタキーとして定義し、同一のクラスタキーを持つ複数テーブルの各行を
同一のブロックに格納する仕組みです。効率良いブロックアクセスで結果を
取得することができます。ただしブロックサイズ以上のデータが同じキーで
存在する場合はクラスタ表を使用しない方が早い場合があります。
また、クラスタキーが更新される可能性がある場合もクラスタ化は向いていません。
更新された行は別のブロックへ移動する必要がある為です。
hash cluster tables:通常のクラスタ(索引クラスタ)に対し、クラスタキーに
ハッシュ関数を適用した結果に紐づいたブロックに格納されるので、
特定の値を検索する際にはその検索キーにハッシュ関数を適用するだけで
ブロックの場所がわかってしまうので便利です。
Sorted hash cluster tables:クラスタ表へのアクセスがsortを伴う場合、
sort済みのハッシュクラスタを定義することでアクセス時間が改善されます。
Look at TPC benchmarks for your server
※TPC:TPCはTransaction Processing Performance Councilの略です。
コンピュータの処理性能を評価するための評価ルールを定める団体です。
主にTPC-Cというルールで1分間のトランザクション件数を競います。
benchmark:比較する為のレベル、またはそのレベルを採取すること
主にITの世界では、コンピュータの性能を比較する為の性能測定値を指す。
現在のTPC-CのTOP10はこちらです。
http://www.tpc.org/tpcc/results/tpcc_perf_results.asp?resulttype=all&version=5¤cyID=0
この中の情報についての説明は「Oracle解説」のコーナーで説明いたします。
◆ Using direct I/O:
※ここで言うダイレクトI/OとはOSのバッファキャッシュを経由せずに
ディスクにアクセスすることを指しています。
詳細は「Oracle解説」のコーナーで解説いたします。
Solaris:Sun MircrosystemsのUNIXです。
AIX:IBMのUNIXです。
HP-UX:HPのUNIXです。
VxFS:Veritas社(現symantec)のファイルシステムです。
It is also possible to enble direct I/O on per-file basis
using Veritas QIO using the "quistat" command
※vxfsのquick I/O機能を利用して、ファイルをrawデバイス化する
ことができます。
Super-large PGA can reduce runtimes by 8x
※PGAについては、21号の解説をご覧下さい。
http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html
Override 5% limit with _pga_max_size
※隠しパラメータ_pga_max_sizeについても、21号の解説をご覧下さい。
http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html
Often supplemented with use_hash hint
※use_hashヒントはハッシュ結合をoptimizerに指示します。
I gave the query some hints "NOREWRITE FULL USE_HASH ORDERED".
※norewriteヒント:query_rewrite_enableを無効にします。
fullヒント:フルスキャンをoptimizerに指示します。
orderedヒント:from句で指定した順に表を結合するようoptimizerに指示します。
INDEXについて学ぶなら読みたい本です。
http://www.amazon.co.jp/exec/obidos/ASIN/4434071610/qid=1133577776/sr=1-1/ref=sr_1_0_1/503-8733354-6830309
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
★ 英語ぷちクイズ ★
※答えと思うリンクをぷちっとクリックしてください。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
☆食べたものが美味しくて気に入った場合に使うとき、一般的なのはどちら?
◆I love it.
┗ http://clickenquete.com/a/a.php?M0002066Q0018291A1dcb0
◆I'm lovin' it.
┗ http://clickenquete.com/a/a.php?M0002066Q0018291A2c438
○結果を見る
┗ http://clickenquete.com/a/r.php?Q0018291C372b
締切:2006年12月08日18時00分
協力:クリックアンケート http://clickenquete.com/
こたえは次回に発表します。
------------------------------------------------------
★ ランキングにも一応参加しております
気が向いたらクリックお願いします。
「ブログ村、IT技術ブログランキング」
http://it.blogmura.com/in/080814.html
------------------------------------------------------
■ 前回のこたえ
☆なかま外れはどれでしょう
◆for instance
◆for example
◆e.g.
◆i.e.
○結果を見る
┗ http://clickenquete.com/a/r.php?Q0018009Cb2ec
答えはi.e.です。
他は全て(例)を意味していますが、i.e.は「すなわち」的なニュアンスで、
前述の説明を簡潔に言い換えたりする場合に使用します。
e.g.はラテン語のexempli gratiaの略で、
i.e.はラテン語のid estの略です。
ちなみにこんな言葉もラテン語の略です。
a.m. -> ante meridiem
p.m. -> post meridiem
etc. -> et cetera
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Oracle解説
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■ ファンクション索引(FBI:function-based indexes)
8iからの機能です。
以下の例のように関数を用いた検索式でもインデックスを使用することができます。
関数だけでなく、(b*10-1)のような式でもOKです。
create table table_x (aaa char(10),bbb number);
begin
for k in 1..1000 loop
insert into table_x values(k,1);
end loop;
commit;
end;
/
create index index_x on table_x (substr(aaa,1,2));
set autot trace
select aaa from table_x where substr(aaa,1,2)='10';
実行計画内に以下の行があることでindex_xが使用されたことがわかります。
* 2 INDEX RANGE SCAN INDEX_X 4 1 (0) 00:00:01
set autot off
drop index index_x;
create index index_x on table_x (aaa);
set autot trace
select aaa from table_x where substr(aaa,1,2)='10';
今度はindexが使用されず、FULL SCANが走ったことがわかります。
* 1 TABLE ACCESS FULL TABLE_X 12 144 2 (0) 00:00:01
■ マテリアライズドビュー
8iからこの名称で呼ばれるようになりました(その前はsnap shot)
シンプル(すぎる)例で感覚をイメージいただければと思います。
create table table_x (aaa char(10),bbb number);
create table table_y (ccc char(10),ddd number);
create materialized view mview_1
as select aaa,ccc from table_x a,table_y b
where a.bbb=b.ddd;
begin
for k in 1..1000 loop
insert into table_x values('abc',k);
insert into table_y values('efg',k);
end loop;
commit;
end;
/
--この時点ではリフレッシュされていないのでゼロ件です。
select count(*) from mview_1;
exec dbms_mview.refresh('mview_1','c');
--リフレッシュされたのでマージ結果がカウントされます。
select count(*) from mview_1;
この他、マテリアライズドビューログや集合関数付のマテビュー
fast refresh機能、クエリリライト機能、レプリケーションなど
突っ込んでいくとどんどん難しくなるのですが、別の機会に説明いたします。
■ ライブラリキャッシュ
ライブラリキャッシュも含めてOracleのメモリ構造を整理します。
SGA:システムグローバルエリア
│
├─ データベースバッファキャッシュ(実際のデータのキャッシュ)
│
├─ REDOログバッファ(REDOログ用のキャッシュ)
│
├┬ 共有プール(shared pool)
││
│├┬ ライブラリキャッシュ
│││
││├─ 共有SQL領域(SQL文のキャッシュ)
│││
││├─(共有サーバ構成の場合)プライベートSQL領域(バインド変数の内容等)
│││
││└─ その他
││
│└─ データディクショナリキャッシュ(データディクショナリのキャッシュ)
│
├─ ラージプール
│
├─ javaプール(javaコードやデータのキャッシュ)
│
└─ ストリームプール
PGA:プログラムグローバルエリア
│
├─(専用サーバ構成の場合)プライベートSQL領域
│
├─ SQL作業領域(sort作業等の領域)
│
├─ カーソル領域
│
└─(専用サーバ構成の場合)セッションメモリー
■ TPC-C ベンチマーク情報
恐らくBurlesonさんが仰っているHP world-record benchmarkとは以下のリンクの
benchmarkデータのことだと思います。
http://www.tpc.org/results/FDR/TPCC/HP%20Integrity%20rx5670%20Cluster%2064P_FDR.pdf
このbenchmarkは全体では5位で、Clusterシステムとしては、唯一のTOP10入りです。
上記ファイル内でも初期化パラメータが公開されていますが、
burlesonさんのピックアップされた隠しパラメータは以下の通りです。
_in_memory_undo=false
_cursor_cache_frame_bind_memory = true
_db_cache_pre_warm=false
_check_block_after_checksum = false
_lm_file_affinity
<_in_memory_undo=false>
10gからの新機能でありながら、公開されていないという
in memory undo(IMU)機能を無効にしています。
非クラスタ環境のbenchmarkの初期化パラメータでは特に無効にされていないので、
RACのキャッシュフュージョンなどでこの制御に問題があるということがあるのかもしれません。
in memory undoはCBC Latch(cache buffer chains latch)の競合を減らす為に、
本来データベースバッファキャッシュのUNDOセグメントを利用するUNDOデータを
共有プールの独立したimu_poolに切り替える機能です。(defaultで有効)
cache buffers chains latchとは、データベースバッファキャッシュ内に
どんなデータがあるのかを示すリストをロックするlatchです。
latchとは家のドアなどにかけるチェーンのことで、
Oracleのlatchは各メモリエリアをロックする為の鍵のような役割を持っています。
<_db_cache_pre_warm=false>
Buffer Cache Pre-warm機能はDB初期起動時にセグメントの最初のExtentデータを
キャッシュに読み込む機能が有効になっています。(10g新機能)
キャッシュのHIT率を最初から高めるためでしょうか。。。それを無効にしています。
その他のTOP10入りbenchmarkの初期化パラメータで気に止まったものをピックアップしました。
確認したのは以下のbenchmarkです。
<3位(Oracleで1位)IBM eServer p5 595>
http://www.tpc.org/results/FDR/TPCC/IBM_595_32_20050412_fdr.pdf
<5位(Oracle Clusterで1位)HP Integrity rx5670 Cluster Itanium2/1.5 GHz-64p/6>
http://www.tpc.org/results/FDR/TPCC/HP%20Integrity%20rx5670%20Cluster%2064P_FDR.pdf
<8位(Oracleで3位)HP Integrity Superdome ・Itanium2/1.5 GHz-64p/64c>
http://www.tpc.org/results/FDR/TPCC/hp_tpcc_sd_1mil_fdr.pdf
<10位(Oracleで4位)FUJITSU PRIMEQUEST 480 c/s>
http://www.tpc.org/results/FDR/TPCC/fujitsu_primequest480_tpcc_fdr.pdf
<_awr_restrict_mode=true>
名前そのままですが、awrの全機能を無効にします。
<_collect_undo_stats=false>
v$undostatへのundo統計取得を止めます。
<replication_dependency_tracking=false>
レプリケート環境でパラレルに変更を伝播する為の依存性追跡機能。
レプリケーションを使用しない環境ではdefaultのtrueのままにしておく
メリットが無さそうです。
<undo_retention = 1>
特に要件がない限り、undo_retentionは小さな値にして、undo表領域の無駄な拡張を
防止した方がよさそうです。
隠しパラメータの確認・更新方法は21号の解説欄でご紹介しています。
http://imoment.blogspot.com/2006/11/undocumented-secrets-for-super-sizing_07.html
■ direct I/O
OracleのI/OパターンにはファイルシステムI/Oと、RAWデバイスI/Oが
あります。ファイルシステムI/OはOSのファイルシステムを経由して
データにアクセスするのに対し、RAWデバイスI/OはOSのファイルシステムを
経由せずにデータアクセスします。
最近はファイルシステムでも優れたパフォーマンス対策がなされており、
RAWデバイスにした方が早いとは言い切れません。またRAWデバイスは
OSファイルシステム上で管理できないので管理性に劣ります。
ファイルシステムI/Oの場合、Oracleのバッファキャッシュを経由して、
さらにOSのバッファキャッシュも経由し、最終的にディスクに到達するので、
2重のバッファを経由することがパフォーマンスに悪影響する場合があります。
OSファイルシステムにはそれぞれOSのバッファキャッシュを経由しない為の
オプションが用意されているので、これを活用することでOracleのパフォーマンスが
改善できるかもしれません。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
編集後記
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
今号からご購読いただいた皆様はじめまして。
本日も最後まで読んでいただきありがとうございます。
すごいことに 【 1 分で治る!あなたの通じない英語】のTomoさんが
有料版で発行している【1分で治る!あなたの通じない英語-Revo-】を
無料開放されました。しかも15000円の【恐怖の誤英語克服マニュアル】も
無料開放!!!創刊1周年記念ということなのですが、登録すれば、
期間無制限で購読できます。しかもこのメルマガ発行者は有料だそうです。
鼻血が出そうなサービスですね^^;
先週の土曜日、川江美奈子さんの「夜想フ会~瑠璃色の夜」に行ってきました。
http://minakokawae.blog.ocn.ne.jp/kawae/
嫁さんが自分のお友達だったのもあって、気合を入れて
整理券番号1,2番をゲットしてくれたので、
先頭の真正面で素敵な歌を聴くことができました。
幸いにもプロデューサーの武部聡志さんがゲストでpianoを弾いてくれたので
弾き語りでない歌に集中して歌う川江さんという珍しい物も聴く事ができました。
本人の欲が無いのもあって、実力や曲の完成度はものすごく高いのに、
まったくマイナーなので、ファンは熱心な方々ばかり。。。
コンサートが始まる前に聞こえてくるみなさんの川江さんに対する熱い
想いが本当にすごくて自分のことのように嬉しく少し涙が出てしまいました。
川江さんのあだ名は「ギャンちゃん」で、由来はガンダムのギャンに似ているから
とのこと。正面で見ていたら途中から「ギャン」にしか見えなくなり。
とても可笑しかったです^^
会場でお隣だった熱心なファンの方の川江さんブログです。
http://blog.goo.ne.jp/gyanchan/
それではまた。
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
おわりに
___________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
記述誤りなどのご指摘、
記事に関する疑問点・質問・感想・ご意見・ご感想など
yakusa_oracle@yahoo.co.jpまでお願い致します。
簡単な自己紹介はこちら
http://pr2.cgiboy.com/S/3191274
バックナンバー兼ブログはこちら
http://imoment.blogspot.com/
登録・解除はこちらから
http://www.mag2.com/m/0000200441.htm