スキップしてメイン コンテンツに移動

投稿

2012の投稿を表示しています

コンカレンシーにまつわるアレ・コレ

最初に 今日は、 JPOUG Advent Calendar のエントリです。 昨日の小田さんに続き、私は、 1μmも役には立たないエントリ となります ! 最近思うこと 昨今、データベースシステムを構成するハードウェアは大量のコア、一昔では考えられないほどの大量のメモリーが搭載し、さらにデータベースのボトルネックの王者たる風格さえ漂っていたI/Oにも高速化の波が押し寄せてきています。 そんな中、古くて新しい、そして、RDBMSとしての真価を問われるコンカレンシーの問題がボトルネックとして浮かび上がっているような気がしています。 このコンカレンシーの問題は、曲者で、どんなに高速なCPUを沢山搭載しても、どんなに沢山のメモリーを積んでも、ロケットばりの高速ストレージを使っても、コンカレンシーがボトルネックとなると全くパフォーマンスがスケールしません。(まぁー、極端な言い回しですが) そんな事を、つらつら考えつつ、コンカレンシーの問題が大きく関係するBuffer Cache上で繰り広げられる様々な動きを考えて見ることにします。 ここで、登場するボトルネックの原因となるWait Eventは、こんな物です。 latch: cache buffers chains latch: cache buffer lru chain free buffer waits read by other session まず、 SELECT文 のEXEC/FETCHフェーズを想像して下さい。 上記のWait Eventを噛み砕くと、こんな感じでしょうか? latch: cache buffers chains 「僕の探しているブロックはキャッシュされていますか~」を多くの人(Session)が聞きたがっている。でも、キャッシュされているか答えをもらうためのチケット(cache buffers chains latch)は一つ(もしくは非常に少ない)なので、なかなか、その順番が回ってこない。なので、「待つ」 * ちなみに latch: cache buffers chains は"聞く"だけなら、コンカレンシーの問題は起こらないのですが、このラッチは、「ブロックをキャッシュするので、ちゃんと管理してお

Oracle OpenWorld 2012 Unconference presented by JPOUG

2012/04/06に六本木アカデミーヒルズにてOracle OpenWorld 2012 Unconference presented by JPOUGとして多くのセッションが行われました。お越しいただいたい全ても皆様、セッションを担当して頂いた方々、Unconferenceの運営を任せて頂いた関係者各位に感謝申し上げます。 Unconferenceの中で、私も1つのセッションを担当しました。本質的には、 - プリミティブな世界の変化により、アプリケーションは変わらなければいけないし、変わらざるを得ない - 今まさに、データベースにおいても、その変化が起きている つまり、我々データベースに携わるものも変わらなければいけないし、変わらざるを得ない ということですが、セッション終了後、私がセッション内でお題として扱った 同一 の SQL 文 をネタにして、  同一 の実行計画 により、   異なる I/O パターン の方法論について質問がありました。本セッションの本質ではないため、あまり説明はしませんでした。(本当は、ちょっと異なるI/Oパターンとしては無理くり感があり、恥ずかしかったので...) しかし、質問がありながら、公開しないほどのものではないので、本ブログにセッション内で使用した資料も合わせて掲載しておきます。 oow2012 unconference View more presentations from Koji Shinkubo . - DIRECT PATH READ 11gR2が検証環境でしたので、十分大きいセグメントに対しては自動的にdirect path readをオプティマイザが選択するので、本検証環境は何も特別なことは実施していません。 古いバージョンでは"_serial_direct_read"等にて制御可能です。 - DB FILE SCATTERED READ alter session set events '10949 trace name context forever, level 1'; alter session set "_very_large_object_threshold"=50

ROracle: OCI based Oracle database interface for R

先日、ROracleがOCIベースに変更されたようなので、気になって入れてみました。 そもそも、私自身、Rから積極的にOracleを使おうと考えてなかった(それほど、大量データを扱わない)のですが、Oracleにあるデータをサクっと抽出してサラっと分析できると便利だろうと思います。ROracle自体はCRAN(The Comprehensive R Archive Network)にソースの状態で置かれているので別途コンパイルが必要です。以下、R(および必要であればRStudio)とROracleのコンパイル方法をまとめておきます。 * 基本的にはココをベースにしています。( http://cran.r-project.org/web/packages/ROracle/INSTALL ) まず、R自身をインストールしないと話は始まらないので以下からダウンロードします。 (私はWindows版2.14.2をダウンロードしてインストールしました) http://cran.r-project.org/ 続いてGUIツール(コンソールだけで良ければ必要ありません)もインストールしておきます。(v0.95) http://rstudio.org/download/desktop また、Windows環境でmake等のツールが必要になるのでcygwinを含めた一式(Rのバージョンに合わせて)Rtoolsをダウンロードしてインストールしておきます。 http://cran.r-project.org/bin/windows/Rtools/ あと、Oracleのinstant client(basicとSDK)を以下に配置しておきます。(どうもパスは固定のようです。32bitの方はx64の部分をx32としてください) C:\instantclient\x64\instantclient_11_2 最後にROracleをダウンロードしておきます。 http://cran.r-project.org/web/packages/ROracle/index.html では、コマンドプロンプト(RStudioではシェル)を起動して * パスは適宜読み替えてください C:\> PATH=%PATH%;C:\Rtools\bin;C

JPOUGの正式オープン

「優れたエンジニアに接することが成長への近道――幹事に聞く「JPOUG」の真の意義」 でも触れましたがJPOUG(Japan Oracle User Group)が、ボードメンバーの方をはじめ様々な方のお力を借り www.jpoug.org として正式にオープンしました。これから、本格的にセミナー、情報共有を図っていきたいと考えています。Facebook、Google Groupも同時に公開しました。皆様のコミュニケーションの場になれば。と思っています。 Facebook http://www.facebook.com/jpougfan Google Group https://groups.google.com/group/jpoug/ また、4月に開催される Oracle OpenWorld において "Oracle OpenWorld Unconference presented by JPOUG" としてアンカンファレンスを行う予定ですので、お楽しみに。