Column
ラッチをCPUより多くする――Oracleパフォーマンス最適化のヒント
Oracleデータベースのパフォーマンス最適化では、「ラッチはCPUの数より増やしても意味がない」とよく言われる。だが、実はそこにはうそが隠れている。どういうことか説明しよう。
「ラッチはCPUの数より増やしても意味がない」とはよく言われることだ。なぜか。CPUの数より多くのラッチを同時に使用することはできないからだ。まったく理にかなっているようだが、実はうそが隠れている。どういうことか説明しよう。
あなたが、札付きの凶暴な囚人が集められた警備の厳重な刑務所の所長だとしよう。部下の看守は20人で、それぞれ20人の囚人を担当している。大規模暴動を防ぐため、これら21人のグループは相互に隔離されている。また、万が一銃撃戦が起こる危険を減らすため、銃は5丁だけ装備され、20人の看守がこれらを共用しなければならない。刑務所長はこのほかに看守長を任命し、5丁の銃を看守に割り振る役割を任せている。看守はどんな状況でも持ち場を離れてはならず、ほかの看守を助けに行くことも許されない。囚人と格闘するのはもってのほかであるため、看守は銃なしでは、暴れる囚人に決して対応してはならず、1度に1人の囚人しか相手にしてはならない。
刑務所長はこうした管理体制に非常に満足していた。各囚人は確実に監視され、暴動の可能性は抑えられており、必要な銃の数は最少限にとどめられていたからだ。しかし、場合によっては、1人の看守が20人の囚人を扱うのが困難になる状況が起こるかもしれなかった。看守が5丁の銃の1丁を手にすることができたとしても、非常に危うい立場にあることに変わりはなかった。
刑務所長はそれを思うと夜もなかなか眠れなかった。彼は心の底では、いずれは看守の1人が20人の囚人に襲われることになるのではないかと心配していた。自分が作った管理体制のせいで看守が命を落とすかもしれないと毎晩悩んだ。そして彼は外部の力を借りようと決断し、高給取りのコンサルタントを起用して助言を求めた。コンサルタントは一言こう言った。「もっと看守を雇ってください」
刑務所長は面食らった。看守は1度に1人の囚人にしか対応してはならず、しかも、それは5丁の銃の1丁を持っている場合に限られるからだ。彼は尋ねた。「看守を増やして銃は増やさないんですか」。高給取りのコンサルタントは、「そうです」とだけ答えた。
刑務所長はすっかり困惑して、コンサルタントに疑問をぶつけた。「そんなばかな。たとえ囚人1人につき1人の看守を雇ったとしても、銃は5丁しかありません。銃がなければ、看守は囚人に対応できないんですよ」
高給取りのコンサルタントは、悠然と長いキューバ葉巻を取り出して火をつけ、ゆっくり2~3服吹かすと、おもむろに言った。「確かにそうです。現状では、もし看守が担当している囚人のうち、2人の『世話』が必要になったら、看守はその1人の世話しかできず、もう1人は放置されることになります。ですが、看守を増やせば、銃を持った看守が、世話が必要な囚人に対応できる確率が上がります」
刑務所長はコンサルタントの知恵に舌を巻き、こう言った。「なるほど。今は、看守が20人の囚人のうち1人に対応していたら、ほかにもう1人を相手にすることはできません。しかし、看守を増やせば、看守の1人が(銃を持って)1人の囚人に対応していても、別の看守が(同じく銃を持って)もう1人の囚人に対応できるわけですね」
こうして問題は解決され、高給取りのコンサルタントは、たっぷりボーナスを受け取った。
では、以上の話が、Oracleのラッチングとどのように関連しているかを見ていこう。この話のそれぞれの銃はCPUを、それぞれの看守はラッチを、それぞれの囚人はメモリ構造(例えば、キャッシュバッファチェーンの1つなど)を表している。この話では、5丁の銃(CPU)しか使用できないのは確かだが、この5丁の銃を、任意の囚人、つまりメモリ構造(例えば、ハッシュバケットチェーンの1つなど)に可能な限り迅速に割り当てるというところがミソだ。
Oracleでは、1つのラッチでメモリ構造の複数の部分(例えば、複数のキャッシュバッファチェーンなど)がカバーされることが多い。これは、2つのプロセスが、近接したメモリ構造にアクセスする必要があっても、1つのラッチで両方がカバーされているため、アクセスできないということを意味する。この問題の1つの解決策は、ラッチの数がCPUの数を大幅に上回るとしても、ラッチを増やすことだ。一般に、メモリ構造の数に対するラッチの数の比率を、1に近づけるのがよいと考えられている。そうすることで、任意のメモリ構造についてラッチが使用可能になる可能性が高まる。高給取りのコンサルタントが、銃が5丁しかないと分かっていても、看守の増員を提案したのはそのためだ。
具体的な例で言えば、ラッチをCPUの数より大幅に増やすのが効果的な場合の1つとして、キャッシュバッファチェーンラッチの場合がある。手短に説明しよう。
詳細は省くが、Oracleが「このブロックはバッファキャッシュにあるか」と問い合わせると、キャッシュバッファチェーンの1つにこの問い合わせが送られる。このチェーンを対象に順次検索が行われ、正しいバッファが探される。Oracle 9から、チェーンの数はブロックバッファの数の2倍強となっている。
キャッシュバッファチェーン(CBC)ラッチの数は、構成可能なインスタンスパラメータだ。各CBCラッチは、1つ以上のキャッシュバッファチェーンを保護する。つまり、カーネルコードは、特定のチェーンにアクセスする前に、そのチェーンをカバーする特定のCBCラッチを取得しなければならない。Oracle 9から、1つのCBCラッチは、場合によっては700以上のキャッシュバッファチェーンをカバーするようになった。複数のプロセスが、同じCBCラッチで保護されている1つ以上のチェーンにアクセスしようとすると、CBCラッチ競合が発生する。その解決策の候補の1つ(ほかにもたくさんある)が、CBCラッチを増やすことだ。
なぜか。ラッチを増やせば、1つのラッチが保護するチェーンの数が減るため、取得しなければならないラッチを取得できる可能性が大きくなるからだ。実のところ、この一般的な解決策は、CPUの数に着目したものではない。複数のプロセスが同じラッチを要求する可能性を減らすという発想に基づいているのである。
従って、Oracleのプロセスは、CPUの数より多くのCBCラッチを要求しないかもしれないが、CBCラッチをCPUの数より増やすのは、非常にいいアイデアだ。
以上の説明が参考になるとともに、Oracleの内部の仕組みに改めて関心を持っていただくきっかけになれば幸いだ。
本稿筆者のクレイグ・シャラハマー氏は、IT業界で18年以上の経験を持つ。オラパブの社長として、Oracleベースのシステムの包括的なパフォーマンス最適化(事前および事後の)を実践し、その方法を教育することで、Oracleパフォーマンス管理者を支援することを目指している。同氏は教育コースの開発、提供に加えてコンサルタントの仕事もしている。コンサルタントとして、画期的なパフォーマンス管理製品の開発にかかわった経験を持つほか、Oracleに関する書籍の出版や技術レビュー記事の執筆、さまざまなOracleカンファレンスでの基調講演を行っている。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
2
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
3
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
4
221人調査で分かった「情シス最大のストレス」は?
-
5
「データストレージの活用方法」に関するアンケート
-
6
「AI時代の統合基盤・エンタープライズAI管理」に関するアンケート
-
7
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
-
8
本当に安いPCで十分か? “すぐ重くなる”を防ぐノートPC選びの絶対条件
-
9
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
10
Claudeの不可視透かしに批判殺到 著作権消失や誤判定に潜む企業リスク
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー