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

投稿

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

最初に 今日は、 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" としてアンカンファレンスを行う予定ですので、お楽しみに。

ZFS on Linux and Lustre その1

先日、分散ファイルシステムでLustreに興味があるとブログに書きましたがZFS on Linux( http://zfsonlinux.org/ )も、気づいたらrc4までリリースが進んでいます。 rc3でlustreとの連携が図られた模様でlustreのバックエンドとしてzfsが使用可能になっています。さらにサポートされるカーネルも2.6.32ベースと比較的、ビルドしやすい?感じになっています。(絶賛、開発中なのは変わりませんが...) 今回は、rc4をベースにlustre連携をやってみようと思います。 まずは、lustreを動かすには、いくつかカーネルにパッチをあてる必要があるので、そちらから。使用した環境は Oracle Linux 6 なのですが、カーネルソースが入手できるものがRedhat互換のkernel-2.6.32-71.el6だったので、そちらをベースにパッチをあてることにしました。 1. 事前準備 # public yum の準備 $ cd /etc/yum.repos.d $ wget http://public-yum.oracle.com/public-yum-ol6.repo ## enabled=1をお忘れなく # 不必要なので停止 $ service iptables stop $ chkconfig iptables off $ vi /etc/sysconfig/selinux $ setenforce 0 2. パッチ(を含むlustreソース)をダウンロード カーネルのビルドはこちらを参考に( http://fedoraproject.org/wiki/Docs/CustomKernel ) $ mkdir ~/work; cd ~/work $ wget --no-check-certificate http://github.com/downloads/behlendorf/lustre-kdmu/lustre-2.0.58.2-1chaos.tar.gz $ tar xzvf lustre-2.0.58.2-1chaos.tar.gz $ yum install rpmdevtools yum-utils 3. カーネルビルド環境の準備 $ rpmdev-setuptree ...

IOUG (Collaborate11) in Florida 4th

 IOUGも3日目となり、ちょっと疲労も溜まってきましたが、何とか乗りきろうと思っています。 今日の目的は昨日に続いて、OraPubのShallahamerのセッションです。(結構、楽しく聞けるのと、非常に学術的なアンバランスが良い) あとは、最初のIOUGで買ったOracle本がMike Ault著だったこともあり、IOUGに来ると何故か彼のセッションに出てしまいます。 ということで本日のセッションは以下。 Title      : Security Bootcamp: 60 Oracle Database Security Tips in 60 Minutes Speaker    : Ursula Koski Description: This session will be delivered in blazing speed. 60 Oracle Database Security Tips in 60 minutes. Title      : Virtualization Bootcamp: Optimizing Oracle databases on VMware Speaker    : Guy Harrison Description: An increasing proportion of Oracle databases are running in virtual environments and many on VMWare ESX servers. Performance of databases in these virtual environments is subject to some unique considerations relating to the way VMware manages the shared CPU Memory and Disk resources.In this presentation well consider how to monitor and configure VMware to optimize Oracl...

IOUG (Collaborate11) in Florida 3rd

今日は、有名?な Pythian のAlex Gorbachev(*1)と OraPub のCraig Shallahamerの セッションを楽しみにしていたのですが、残念ながらGorbachevのセッションはキャンセルになっていました。ただ、Shallahamer のセミナーは結構楽しいものでした。 (*1) 昔 BAAG (Battle Against Any Guess)というチューニング用語(というか方針)を聞いてなるほど。と思っていたのですが、これを主宰したのがAlex Gorbachevだと今知りました。 また、関係ないですが、BAAGのネーミングは BAARF (Battle Against Any Raid Five)に似ていると思っていたら、BAARFを参考に考えたと記載がありました。 本日参加したセッションは以下。 Title      : MySQL Bootcamp: MySQL From a Point of View of an Oracle DBA Speaker    : William Brock Description: Both Oracle and MYSQL databases have literally thousands of features and functions. How they are implemented and what features are available can vary widely. Having a simple checklist is virtually useless unless you have an excellent working knowledge of the "guts" of the database (something that can only be obtained by experience actually using the products). The presentation will be from the point of view of an experienced Oracle DBA and a novice MYSQL DBA. The focus w...