┏┏┏┏┏━━━━━━━━━━━━━━━━━━━━━━━━…・・ ┏━
┏┏┏┏┛ 2002.03.27 ┏┛┛
┏┏┏┛ ☆おら!オラ!Oracle -どっぷり検証生活-★ ┏┛┛┛
┏┏┛ ┏┛┛┛┛
┏┛・・…━━━━━━━━━━━━━━━━Vol.97━…・・ ┏┛┛┛┛┛
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●≫≫≫≫≫≫≫≫≫≫皆様ご存知ですか・・?!≪≪≪≪≪≪≪≪≪≪●
◇ 「おら!オラ!Oracle -どっぷり検証生活-」の英語版が ◇
◆ 配信されていることを・・・ ◆
◇ 英語での表現、単語などをメルマガで読んでみませんか? ◇
◆ 皆様の知らないOracleフリークの世界に ◆
◇ どっぷりはまってしまいましょう! ◇
◆ ご登録はこちらから→ http://www.performance-insight.com ◆
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
■□注意事項□■
本文中にテーブルが含まれていますので、お読みになる際はMSゴシッ
ク等、等幅フォントをお使いただくことをお勧めします。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
┏─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┓
●【 Oracle 検証生活 】 ●
┗─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┛
<Oracle 9i 関する検証 その1>
ペンネーム ちょびひげ
-- データベース・バッファとブロックサイズ --
Oracleはチューニングをしなければ遅くて使えない。
なんて話はよく聞かれる。
Oracleがメモリ上にキャッシングする領域(System Global Area)管理もその1つ
である。今回から、System Global Area(SGA)を構成する3つの領域の1つデータ
ベース・バッファキャッシュとブロックサイズについて検証して行きたい。
データベース・バッファキャッシュとは:
データベース・ブロックを格納するメモリ上の領域である。
最後に使用されたブロックをメモリ上に保持することにより、ディスクのI/Oが
減り、パフォーマンスが向上する。
LRUリストとダーティリストとは:
バッファ上のデータはLRUリスト(Least Recently Used List もっとも最後にア
クセスのあったブロックの順番リスト)で管理されている。つまり、もっとも長
い時間アクセスの無かったデータから、メモリからの追い出しが始まる。
また、LRUリスト内に更新ブロックが存在した場合は、LRUリストからダーティ
リストにブロックのエントリが移動される。
メモリ上のブロックはLRUリストかダーティリストのどちらかに存在する。
バッファのサイズが小さすぎるとメモリ上に必要なデータがほとんど存在せず
、負荷の高いディスクI/Oが頻繁に発生しパフォーマンスが悪化する。データベ
ース・バッファのヒット率を定期的にチェックすることは、データベースを管
理する上で必須の作業と言えよう。
ハッシュチェーンリストとは:
データベース・バッファを更新する際に必要となるラッチを管理するリストで
ある。データベース・バッファの大きさが小さい場合メモリ上での競合が発生
し、cache buffer chain ラッチの競合が多発する。
Oracleはデータをブロックサイズの単位でメモリ上に確保する為、データベー
ス・バッファの単位もブロックサイズ単位である。8iまでは以下の式でデータ
ベース・バッファのサイズが決まる。
DB_BLOCK_SIZE × DB_BLOCK_BUFFERS
Oracle9iでは、テーブルスペースごとにブロックサイズ(DB_BLOCK_SIZE)を設定
出来る、マルチブロック・サイズをサポートしている。
それに伴って、複数のサイズのデータベース・バッファのサイズの設定が必要
となっている。
つまり、データベース・バッファの設定が、よりパフォーマンスに影響を与え
ると言えよう。
では、実際に9iで、デフォルト(create database の時に指定したサイズ)とは
別のブロックサイズのテーブルスペースを作成してみよう。
*************************************************************
# 16Kのブロックサイズ(デフォルトは2K)を作成
SQL> create tablespace test datafile '/export/home/ora901/oraoraora/test.dbf'
2 size 10m blocksize 16k;
*
ERROR at line 1:
ORA-29339: tablespace block size 16384 does not match configured block sizes
# 16kのバッファキャッシュが確保されていないことを確認
SQL> show parameter db_16k_cache_size
NAME TYPE VALUE
-------------------------------- ----------- ---------------
db_16k_cache_size big integer 0
*************************************************************
おーっとっとっと、データベース・バッファの領域設定を忘れてしまった。
では、データベース・バッファの領域を設定してもう一度やって見よう!
*************************************************************
# 初期化パラメータファイルのdb_16k_cache_sizeを設定
db_16k_cache_size=34603008
# 16kのバッファキャッシュが確保されていることを確認
SQL> show parameter db_16k_cache_size
NAME TYPE VALUE
------------------------------ ----------- --------------
db_16k_cache_size big integer 50331648
# 16Kのブロックサイズ(デフォルトは2K)を作成
SQL> create tablespace test datafile '/export/home/ora901/oraoraora/test.dbf'
2 size 10m blocksize 16k;
Tablespace created.
*************************************************************
今度は正常に作成された。
ちなみに初期化パラメータで指定した16Kのキャッシュ・バッファのサイズ(33MB)
と実際のサイズ(48MB)が異なっているが、これは、9iではグラニュルという単
位でSGAが管理されているため、データベース・バッファのサイズがグラニュル
単位に切り上げられているためである。
以上のことから、9iでは以下のパラメータによって、データベース・バッファ
の大きさが決まる。
DB_CACHE_SIZE + DB_nK_CACHE_SIZE (nKはブロックサイズ)
以上、桜満開の茅ヶ崎にて
┏─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┓
●【 QAについて 】 ●
┗─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┛
<皆様からのQAを受付けております>
皆様のQAにはできるだけ、お答えしたいと思っています。
すべてのQAにお答えすることはできないかもしれませんが、
適宜メルマガ内でとりあげていく予定ですので、是非QAをお寄せください。
┏─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┓
●【 編集者より 】 ●
┗─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━─━┛
1年半ぶりくらいに友達からメールがきたんです。ホームページのURLと一緒
に・・。どんなの作ったのだろうと思いながらも見てみたら・・。なんと!
自分の子供のホームページだったんですっ!親ばかぶりを発揮してました。
高校のころ、一番遊んでいた子が一番最初に落ち着いてしまうとなんかちょ
っと寂しい感じですよねぇ。でも、その子の親ばかぶりを見てるのもなにげ
に面白いんですけどねっ。 by TI
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
登録・解除は以下のURLで行うことができます。
http://www.insight-tec.com/jp/html/ora3/ora3.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<おら!オラ!Oracle-どっぷり検証生活->
発行/編集:株式会社インサイトテクノロジー
http://www.insight-tec.com
マガジンID:0000030093
本メールマガジンに掲載された記事を許可なく転載することを禁じます。
Copyright (c) 1996-2002, Insight Technology, Inc. All rights reserved.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━