SlideShare una empresa de Scribd logo
1 de 30
スベらないチューニングの話
おら!オラ!Oracle どっぷりチューニング生活

 - Understand Oracle I/O Performance -



                         株式会社 インサイトテクノロジー
                            製品開発本部 製品企画部
                                   新久保 浩二
                                          新久保 浩二
                               Twitter: @kouji_s_0808

                                                   1
Dive into READ Performance

本日は

同一のSQL文をネタにして、
同一の実行計画により、
異なるI/Oパターンを発生させ、
I/Oのアクセスパターンで、
いろいろ、違うんだなぁーという素朴な気持ちを
共有していく、
世界初の試みとなります。



                             2
Dive into READ Performance


SELECT /*+ NO_PARALLEL(L) FULL(L) */
   COUNT(*)
FROM
   LARGE_TABLE L;

Rows (1st) Rows (avg) Rows (max) Row Source Operation
---------- ---------- ---------- --------------------------------
         1          1          1 SORT AGGREGATE
  80000000 80000000 80000000 TABLE ACCESS FULL LARGE_TABLE




                                                             3
Dive into READ Performance


この男らしいSQLを味わい深いものにするために

3つの異なるI/OパターンとそのI/Oパターンによる
パフォーマンスの違いをお見せします。
(ちなみに環境はLinux x86_64 11.2.0.3)


3つの異なるI/Oパターンとは?




                                 4
Dive into READ Performance

  そうです。

     – DB FILE SCATTERED READ
     – DB FILE SEQUENTIAL READ
     – DIRECT PATH READ

  そもそも、これらの違いは何だった?




                                 5
Oracle READ Performance

  – DB FILE SCATTERED READ
このイベントは、ユーザー・プロセスがSGAバッファ・キャッシュにバッファ
を読み取り、物理I/Oコールが戻るまで待機することを意味します。
db file scattered readは、データを複数の不連続メモリー位置に読み取るた
めに散布読取りを発行します。散布読取りは通常、マルチブロック読取りで
す。全体スキャンの他、(索引の)高速全スキャンでも行うことができます。
db file scattered read待機イベントは、全体スキャンが発生していることを
識別します。バッファ・キャッシュへの全体スキャンを実行すると、読み取ら
れたブロックは物理的に相互に接近していないメモリー位置に読み取られま
す。このような読取りが 散布読取りコールと呼ばれるのは、ブロックがメモ
リー全体に分散されているからです。…
                        Oracle Databaseパフォーマンスチューニングガイド11gリリース2より



通常、パラレルクエリーでないフルスキャンで発生することが多かった
                             SHINKUBOパフォーマンスチューニングガイド11gリリース2より



                                                                6
Oracle READ Performance

  – DB FILE SEQUENTIAL READ
このイベントは、ユーザー・プロセスがSGA内のバッファ・キャッシュにバッ
ファを読み取り、物理I/Oコールが戻るまで待機することを意味します。順次
読取りは、単一ブロック読取りです。
単一ブロックI/Oは通常、索引を使用した結果です。非常にまれなケースとし
て、エクステントの境界のため、またはバッファ・キャッシュ内にバッファが
存在するため、全表スキャン・コールが単一ブロック・コールに切り捨てられ
ることがあります。これらの待機もdb file sequential readとして現れます。
                        Oracle Databaseパフォーマンスチューニングガイド11gリリース2より


通常、インデックススキャンで発生
                              SHINKUBOパフォーマンスチューニングガイド11gリリース2より




                                                                7
Oracle READ Performance

   – DIRECT PATH READ
SGAのバッファ・キャッシュではなく、ディスクからPGAに直接バッファの読取
りを実行しているセッションは、このイベントで待機します。I/Oサブシステ
ムが非同期I/Oをサポートしない場合、各待機は物理読取りリクエストに対応
します。
I/Oサブシステムが非同期I/Oをサポートする場合、このプロセスでは読取りリ
クエストの発行を、PGAに存在するブロックの処理に重複させることができま
す。プロセスがディスクからまだ読み取られていないPGA内のブロックにアク
セスしようとする場合、待機コールを発行し、このイベントの統計を更新しま
す。したがって、待機数は必ずしも読取りリクエスト数と同じではありません
(db file scattered readおよびdb file sequential readとは異なります)。
                           Oracle Databaseパフォーマンスチューニングガイド11gリリース2より



通常、パラレルクエリー(フルスキャン)で発生することが多かった
                               SHINKUBOパフォーマンスチューニングガイド11gリリース2より




                                                                   8
Oracle READ Performance

 DB FILE SCATTERED READ/DB FILE SEQUENTIAL READ/DIRECT
 PATH READ




                          Oracle Databaseパフォーマンスチューニングガイド11gリリース2より



                                                               9
Dive into READ Performance

  – DB FILE SCATTERED READ
     スループット重視のI/Oパターン

  – DB FILE SEQUENTIAL READ
     IOPS(レイテンシー)重視のI/Oパターン

  – DIRECT PATH READ
     スループット重視のI/Oパターン
     でも、DB FILE SCATTERED READとは違う



                                     10
Check READ Performance baseline

  – スループットが高いとは
  “大きめのI/Oサイズで、1回のI/O処理にはちょっと
   頑張ってもらって、単位時間あたりの処理量を稼ぐ”
                1人で沢山、運ぶんだぜ~。
                   ワイルドだろ~。


  – IOPSが高いとは
  “小さめのI/Oサイズで、1回のI/O処理を軽くしてあげ
   て、単位時間あたりの処理数を稼ぐ”
               1人で何回も運べるんだぜ~。
                  ワイルドだろ~。

                                  11
Dive into READ Performance

  – あれこれ言う前に
  “OSレイヤーでのI/Oパターンとスループット/IOPS
   を理解する必要がある”

  – ここを押さえないと
  “Oracleレイヤーの話をいくらしても、威力が半減”




                                 12
Check READ Performance baseline

  – とりあえず…
  – ベンチマークとってみます。




                                  13
Check READ Performance baseline

  – スループット
                              Throughput (MB)
    1000
                  900
     900

     800

     700

     600

     500

     400

     300

     200

     100
                                                    13
       0
             sequential_1MB                     random_8KB




                                                             14
Check READ Performance baseline

  – IOPS
                              IOPS
    2000

    1800                                1742

    1600

    1400

    1200

    1000          900

    800

    600

    400

    200

      0
             sequential_1MB          random_8KB




                                                  15
Check READ Performance baseline

  – スループット
                                 Throughput (MB)
    6000

                                                         5155
    5000


    4000


    3000


    2000


                   900
    1000


      0
            sequential_1MB_HDD                     sequential_1MB_SSD




                                                                        16
Check READ Performance baseline

  – IOPS
                             IOPS
   250000


                                       206761
   200000



   150000



   100000



   50000


                1742
       0
            random_8KB_HDD          random_8KB_SSD




                                                     17
Oracle READ Performance

  大事なので、もう一度言います。

  同一のSQL文をネタにして、
  同一の実行計画により、
  異なるI/Oパターンを発生させ、
  I/Oのアクセスパターンで、
  いろいろ、違うんだなぁーという素朴な気持ちを
  共有していく、
  世界初の試みとなります。



                           18
Dive into Oracle READ Performance

  – どうすれば良いはない。それが現実だ




                                    19
Check Oracle READ Performance

  – Oracle I/O Pattern
                                Elapsed Time (sec)
    120


                                                                     101
    100
                                  このパターンは極端
                                  ですけど、ワイド
     80
                                  レンジスキャンが
                                  非効率という事を
     60                           OSのI/O特性から
          この違いは何?
                                  見た場合と一緒
     40



                                            20
     20
                   10


     0
             DIRECT PATH READ      DB FILE SCATTERED READ   DB FILE SEQUENTIAL READ




                                                                                      20
Logical/Physical I/O vs. Direct I/O

 – DB FILE SCATTERED READ vs. DIRECT PATH READ

    – 大事なことなのでもう一度まとめます。

    – 両者の違いはSGA(Buffer Cache)を経由するか否か

    – SGA(Buffer Cache)を経由するとは?




                                                 21
Logical/Physical I/O vs. Direct I/O

 – DB FILE SCATTERED READ vs. DIRECT PATH READ

    – 両者のI/Oに違いは… ありますが…

    – さらに違うのは、当然、キャッシュの読み込み量

    – もっと顕著なのは、あのラッチの取得回数




                                                 22
Logical/Physical I/O vs. Direct I/O

 – DB FILE SCATTERED READ vs. DIRECT PATH READ
                                  DB FILE SCATTERED READ
                                                           288


                                                     919

                                                                                   io_submit
            DIRECT PATH READ                                     3552
                                                                                   io_getevents
           323                                                                     pread
                                                                                   others
                                                3551



                               io_submit
                    6408                       DB FILE SCATTERED READ(NO BUFFER)
                               io_getevents
    6325                                                   317
                               others




                                                                                   io_submit
                                                                 6481
                                                                                   io_getevents
                                              6491
                                                                                   others




                                                                                            23
Logical/Physical I/O vs. Direct I/O

          – DB FILE SCATTERED READ vs. DIRECT PATH READ

                cache buffers chains                                cache buffers lru chain
2500000                                                 3000
                                       2200211                                                2639

                                                        2500
2000000

                                                        2000
1500000

                                                        1500

1000000
                                                        1000

 500000
                                                         500

                  6136                                                10
     0                                                    0
            DIRECT PATH READ   DB FILE SCATTERED READ          DIRECT PATH READ      DB FILE SCATTERED READ




                                                                                                       24
Logical/Physical I/O vs. Direct I/O

 – DB FILE SCATTERED READ vs. DIRECT PATH READ

    – そうです。DB FILE SCATTERED READはキャッシュ経
      由ですので、どうしても、キャッシュ上のブロック
      の存在チェックと空き領域のチェックが必要

    – さらに、状況が悪いと、DB FILE SEQUENTIAL READ
      が、気持よく動いているOLTP系処理のエコシステム
      を崩すこともあります。

    * 単純にDIRECT PATH READが優れているという話
      ではありません!!
                                                 25
Check Oracle READ Performance

  – Oracle I/O Pattern
                             Elapsed Time (sec)
    200

                                                                    177
    180

    160

    140
            Disk I/OとBuffer Cache
    120     メンテナンスのコストバランス
                                                           101
    100
            が変われば、パフォーマンス
                                                                                SSD
            バランスも変わる                                                            HDD
     80

     60
                     45
     40                                    30
                                  20
     20     10

      0
          DIRECT PATH READ   DB FILE SCATTERED READ   DB FILE SEQUENTIAL READ




                                                                                26
Tuning Oracle READ Performance

  – OracleのI/Oまわりをチューニングするとは

  – SQL文というある種アプリケーションのチューニング
    の重要性は疑いようもありません。が、ちょっと違
    うアプローチもあるんです

  – そう、それはもっとプリミティブな世界

  – 同じH/W、同じSQL文、同じ実行計画。でも、パ
    フォーマンスが大きく異なる世界。



                                 27
Conclusion

  無骨とも思えるOracleのI/O一つとってもプリミティブな
  世界は味わい深い。

  表面上の実行計画を眺めていても、解決できない問題も
  あるんです。

  Oracleが示す各種イベントも理解しないと本質を見誤り
  ます。

  待機イベントの理解にはOSによるプリミティブな動作が
  理解の助けになります。

  そんな素朴な気持ちが共有できていれば幸いです。
                              28
Q & A




        Questions?



                     29
Thanks




         ORA-03113



                     30

Más contenido relacionado

La actualidad más candente

Corruption And Revive - db tech showcase 2013 特濃JPOUG
Corruption And Revive - db tech showcase 2013 特濃JPOUGCorruption And Revive - db tech showcase 2013 特濃JPOUG
Corruption And Revive - db tech showcase 2013 特濃JPOUGRyota Watabe
 
Introduction of Oracle Database Architecture
Introduction of Oracle Database ArchitectureIntroduction of Oracle Database Architecture
Introduction of Oracle Database ArchitectureRyota Watabe
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪Yohei Azekatsu
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナーKazuko Itoda
 
ZFSでストレージ
ZFSでストレージZFSでストレージ
ZFSでストレージ悟 宮崎
 
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009Ryota Watabe
 
JPUGしくみ+アプリケーション勉強会(第25回)
JPUGしくみ+アプリケーション勉強会(第25回)JPUGしくみ+アプリケーション勉強会(第25回)
JPUGしくみ+アプリケーション勉強会(第25回)Yoshinori Nakanishi
 
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@KyotoPostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@KyotoShigeru Hanada
 
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜Michitoshi Yoshida
 
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishYohei Azekatsu
 

La actualidad más candente (11)

Corruption And Revive - db tech showcase 2013 特濃JPOUG
Corruption And Revive - db tech showcase 2013 特濃JPOUGCorruption And Revive - db tech showcase 2013 特濃JPOUG
Corruption And Revive - db tech showcase 2013 特濃JPOUG
 
Introduction of Oracle Database Architecture
Introduction of Oracle Database ArchitectureIntroduction of Oracle Database Architecture
Introduction of Oracle Database Architecture
 
簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪簡単!AWRをEXCELピボットグラフで分析しよう♪
簡単!AWRをEXCELピボットグラフで分析しよう♪
 
20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー20130203 OSS-DB Exam Silver 技術解説無料セミナー
20130203 OSS-DB Exam Silver 技術解説無料セミナー
 
ZFSでストレージ
ZFSでストレージZFSでストレージ
ZFSでストレージ
 
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
プロとしてのOracleアーキテクチャ入門 ~番外編~ @ Developers Summit 2009
 
JPUGしくみ+アプリケーション勉強会(第25回)
JPUGしくみ+アプリケーション勉強会(第25回)JPUGしくみ+アプリケーション勉強会(第25回)
JPUGしくみ+アプリケーション勉強会(第25回)
 
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@KyotoPostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
PostgreSQL 9.2 新機能 - OSC 2012 Kansai@Kyoto
 
PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介PostgreSQL 9.5 新機能紹介
PostgreSQL 9.5 新機能紹介
 
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
進化したのはサーバだけじゃない!〜DBA の毎日をもっと豊かにするユーティリティのすすめ〜
 
Dbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publishDbts2012 unconference wttrw_yazekatsu_publish
Dbts2012 unconference wttrw_yazekatsu_publish
 

Similar a oow2012 unconference

What is doobie? - database access for scala -
What is doobie? - database access for scala -What is doobie? - database access for scala -
What is doobie? - database access for scala -chibochibo
 
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...Insight Technology, Inc.
 
Fusion-io(ioDrive) benchmarking #sfstudy 01 LT
Fusion-io(ioDrive) benchmarking #sfstudy 01 LTFusion-io(ioDrive) benchmarking #sfstudy 01 LT
Fusion-io(ioDrive) benchmarking #sfstudy 01 LTMasahito Zembutsu
 
BtoCでバインド変数
BtoCでバインド変数BtoCでバインド変数
BtoCでバインド変数Yoshito Ueki
 
Mongo dbを知ろう devlove関西
Mongo dbを知ろう   devlove関西Mongo dbを知ろう   devlove関西
Mongo dbを知ろう devlove関西Ryuji Tamagawa
 
データベースMeetup~Vol.1 HANA概要からOLAPアプリの進化
データベースMeetup~Vol.1 HANA概要からOLAPアプリの進化データベースMeetup~Vol.1 HANA概要からOLAPアプリの進化
データベースMeetup~Vol.1 HANA概要からOLAPアプリの進化Toshihisa Hanaki
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003Shinya Sugiyama
 
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史Insight Technology, Inc.
 
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編Kazuya Numata
 
第9回「Fusion-io ioDriveがもたらした新世界とテクノロジーの肝」(2011/10/06 on しすなま!) ①Fusion-io様資料
第9回「Fusion-io ioDriveがもたらした新世界とテクノロジーの肝」(2011/10/06 on しすなま!) ①Fusion-io様資料第9回「Fusion-io ioDriveがもたらした新世界とテクノロジーの肝」(2011/10/06 on しすなま!) ①Fusion-io様資料
第9回「Fusion-io ioDriveがもたらした新世界とテクノロジーの肝」(2011/10/06 on しすなま!) ①Fusion-io様資料System x 部 (生!) : しすなま! @ Lenovo Enterprise Solutions Ltd.
 
Do you like scala
Do you like scalaDo you like scala
Do you like scalaYuto Suzuki
 
Crooz meet fusion io3 open
Crooz meet fusion io3 openCrooz meet fusion io3 open
Crooz meet fusion io3 opentakaoka susumu
 
Performance Problems when migrating fromoracle pl/sql application to postgres...
Performance Problems when migrating fromoracle pl/sql application to postgres...Performance Problems when migrating fromoracle pl/sql application to postgres...
Performance Problems when migrating fromoracle pl/sql application to postgres...拓也 岸本
 
ログ先行書き込みを用いたストレージ差分取得の一手法
ログ先行書き込みを用いたストレージ差分取得の一手法ログ先行書き込みを用いたストレージ差分取得の一手法
ログ先行書き込みを用いたストレージ差分取得の一手法Takashi Hoshino
 
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力オラクルエンジニア通信
 
JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門
JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門
JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門Kazuki Ueki
 
Add PLEASE clause to Oracle Database
Add PLEASE clause to Oracle DatabaseAdd PLEASE clause to Oracle Database
Add PLEASE clause to Oracle DatabaseNoriyoshi Shinoda
 

Similar a oow2012 unconference (20)

Osc 20130223
Osc 20130223Osc 20130223
Osc 20130223
 
What is doobie? - database access for scala -
What is doobie? - database access for scala -What is doobie? - database access for scala -
What is doobie? - database access for scala -
 
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
[db tech showcase Tokyo 2014] B13: PCIe SSDを用いたMySQL 5.6と5.7 のパフォーマンス対決!~MySQ...
 
Fusion-io(ioDrive) benchmarking #sfstudy 01 LT
Fusion-io(ioDrive) benchmarking #sfstudy 01 LTFusion-io(ioDrive) benchmarking #sfstudy 01 LT
Fusion-io(ioDrive) benchmarking #sfstudy 01 LT
 
BtoCでバインド変数
BtoCでバインド変数BtoCでバインド変数
BtoCでバインド変数
 
Mongo dbを知ろう devlove関西
Mongo dbを知ろう   devlove関西Mongo dbを知ろう   devlove関西
Mongo dbを知ろう devlove関西
 
データベースMeetup~Vol.1 HANA概要からOLAPアプリの進化
データベースMeetup~Vol.1 HANA概要からOLAPアプリの進化データベースMeetup~Vol.1 HANA概要からOLAPアプリの進化
データベースMeetup~Vol.1 HANA概要からOLAPアプリの進化
 
MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003MySQL57 Update@OSC Fukuoka 20151003
MySQL57 Update@OSC Fukuoka 20151003
 
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
C12 AlwaysOn 可用性グループとデータベースミラーリングのIO特製の比較 by 多田典史
 
ヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージ
 
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編
 
第9回「Fusion-io ioDriveがもたらした新世界とテクノロジーの肝」(2011/10/06 on しすなま!) ①Fusion-io様資料
第9回「Fusion-io ioDriveがもたらした新世界とテクノロジーの肝」(2011/10/06 on しすなま!) ①Fusion-io様資料第9回「Fusion-io ioDriveがもたらした新世界とテクノロジーの肝」(2011/10/06 on しすなま!) ①Fusion-io様資料
第9回「Fusion-io ioDriveがもたらした新世界とテクノロジーの肝」(2011/10/06 on しすなま!) ①Fusion-io様資料
 
WalBの紹介
WalBの紹介WalBの紹介
WalBの紹介
 
Do you like scala
Do you like scalaDo you like scala
Do you like scala
 
Crooz meet fusion io3 open
Crooz meet fusion io3 openCrooz meet fusion io3 open
Crooz meet fusion io3 open
 
Performance Problems when migrating fromoracle pl/sql application to postgres...
Performance Problems when migrating fromoracle pl/sql application to postgres...Performance Problems when migrating fromoracle pl/sql application to postgres...
Performance Problems when migrating fromoracle pl/sql application to postgres...
 
ログ先行書き込みを用いたストレージ差分取得の一手法
ログ先行書き込みを用いたストレージ差分取得の一手法ログ先行書き込みを用いたストレージ差分取得の一手法
ログ先行書き込みを用いたストレージ差分取得の一手法
 
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
[Oracle DBA & Developer Day 2012] 高可用性システムに適した管理性と性能を向上させるASM と RMAN の魅力
 
JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門
JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門
JAWS-UG北陸第5回勉強会 クラウド破産しないためのEBS入門
 
Add PLEASE clause to Oracle Database
Add PLEASE clause to Oracle DatabaseAdd PLEASE clause to Oracle Database
Add PLEASE clause to Oracle Database
 

Más de Koji Shinkubo

SAP HANA 2 SPS03 highlights and SAP HANA express edition
SAP HANA 2 SPS03 highlights and SAP HANA express editionSAP HANA 2 SPS03 highlights and SAP HANA express edition
SAP HANA 2 SPS03 highlights and SAP HANA express editionKoji Shinkubo
 
LT SAP HANAネットワークプロトコル初段
LT SAP HANAネットワークプロトコル初段LT SAP HANAネットワークプロトコル初段
LT SAP HANAネットワークプロトコル初段Koji Shinkubo
 
データベースMeetup Vol3
データベースMeetup Vol3データベースMeetup Vol3
データベースMeetup Vol3Koji Shinkubo
 
データベースMeetup vol2
データベースMeetup vol2データベースMeetup vol2
データベースMeetup vol2Koji Shinkubo
 
データベースMeetup vol1
データベースMeetup vol1データベースMeetup vol1
データベースMeetup vol1Koji Shinkubo
 
関西DB勉強会 (SAP HANA, express edition)
関西DB勉強会 (SAP HANA, express edition)関西DB勉強会 (SAP HANA, express edition)
関西DB勉強会 (SAP HANA, express edition)Koji Shinkubo
 
今さら聞けない HANAのハナシの基本のほ
今さら聞けない HANAのハナシの基本のほ今さら聞けない HANAのハナシの基本のほ
今さら聞けない HANAのハナシの基本のほKoji Shinkubo
 
Tech JAM 2016 TEC 11 実践 SAP HANA 大解剖
Tech JAM 2016 TEC 11 実践 SAP HANA 大解剖Tech JAM 2016 TEC 11 実践 SAP HANA 大解剖
Tech JAM 2016 TEC 11 実践 SAP HANA 大解剖Koji Shinkubo
 
HANAのハナシの基本のき
HANAのハナシの基本のきHANAのハナシの基本のき
HANAのハナシの基本のきKoji Shinkubo
 
Jpoug presents なーんでだ2 db tech showcase 2015 tokyo
Jpoug presents なーんでだ2   db tech showcase 2015 tokyoJpoug presents なーんでだ2   db tech showcase 2015 tokyo
Jpoug presents なーんでだ2 db tech showcase 2015 tokyoKoji Shinkubo
 
Dbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexDbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexKoji Shinkubo
 
Meetup! jpoug oracle cloud world - なーんでだ1
Meetup! jpoug   oracle cloud world - なーんでだ1Meetup! jpoug   oracle cloud world - なーんでだ1
Meetup! jpoug oracle cloud world - なーんでだ1Koji Shinkubo
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはKoji Shinkubo
 
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncKoji Shinkubo
 

Más de Koji Shinkubo (15)

SAP HANA 2 SPS03 highlights and SAP HANA express edition
SAP HANA 2 SPS03 highlights and SAP HANA express editionSAP HANA 2 SPS03 highlights and SAP HANA express edition
SAP HANA 2 SPS03 highlights and SAP HANA express edition
 
LT SAP HANAネットワークプロトコル初段
LT SAP HANAネットワークプロトコル初段LT SAP HANAネットワークプロトコル初段
LT SAP HANAネットワークプロトコル初段
 
データベースMeetup Vol3
データベースMeetup Vol3データベースMeetup Vol3
データベースMeetup Vol3
 
データベースMeetup vol2
データベースMeetup vol2データベースMeetup vol2
データベースMeetup vol2
 
データベースMeetup vol1
データベースMeetup vol1データベースMeetup vol1
データベースMeetup vol1
 
関西DB勉強会 (SAP HANA, express edition)
関西DB勉強会 (SAP HANA, express edition)関西DB勉強会 (SAP HANA, express edition)
関西DB勉強会 (SAP HANA, express edition)
 
今さら聞けない HANAのハナシの基本のほ
今さら聞けない HANAのハナシの基本のほ今さら聞けない HANAのハナシの基本のほ
今さら聞けない HANAのハナシの基本のほ
 
Tech JAM 2016 TEC 11 実践 SAP HANA 大解剖
Tech JAM 2016 TEC 11 実践 SAP HANA 大解剖Tech JAM 2016 TEC 11 実践 SAP HANA 大解剖
Tech JAM 2016 TEC 11 実践 SAP HANA 大解剖
 
HANAのハナシの基本のき
HANAのハナシの基本のきHANAのハナシの基本のき
HANAのハナシの基本のき
 
Jpoug presents なーんでだ2 db tech showcase 2015 tokyo
Jpoug presents なーんでだ2   db tech showcase 2015 tokyoJpoug presents なーんでだ2   db tech showcase 2015 tokyo
Jpoug presents なーんでだ2 db tech showcase 2015 tokyo
 
Dbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexDbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortex
 
Meetup! jpoug oracle cloud world - なーんでだ1
Meetup! jpoug   oracle cloud world - なーんでだ1Meetup! jpoug   oracle cloud world - なーんでだ1
Meetup! jpoug oracle cloud world - なーんでだ1
 
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとはdb tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
db tech showcase_2014_A14_Actian Vectorで得られる、BIにおける真のパフォーマンスとは
 
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
 
Jpoug 20120721
Jpoug 20120721Jpoug 20120721
Jpoug 20120721
 

oow2012 unconference

  • 1. スベらないチューニングの話 おら!オラ!Oracle どっぷりチューニング生活 - Understand Oracle I/O Performance - 株式会社 インサイトテクノロジー 製品開発本部 製品企画部 新久保 浩二 新久保 浩二 Twitter: @kouji_s_0808 1
  • 2. Dive into READ Performance 本日は 同一のSQL文をネタにして、 同一の実行計画により、 異なるI/Oパターンを発生させ、 I/Oのアクセスパターンで、 いろいろ、違うんだなぁーという素朴な気持ちを 共有していく、 世界初の試みとなります。 2
  • 3. Dive into READ Performance SELECT /*+ NO_PARALLEL(L) FULL(L) */ COUNT(*) FROM LARGE_TABLE L; Rows (1st) Rows (avg) Rows (max) Row Source Operation ---------- ---------- ---------- -------------------------------- 1 1 1 SORT AGGREGATE 80000000 80000000 80000000 TABLE ACCESS FULL LARGE_TABLE 3
  • 4. Dive into READ Performance この男らしいSQLを味わい深いものにするために 3つの異なるI/OパターンとそのI/Oパターンによる パフォーマンスの違いをお見せします。 (ちなみに環境はLinux x86_64 11.2.0.3) 3つの異なるI/Oパターンとは? 4
  • 5. Dive into READ Performance そうです。 – DB FILE SCATTERED READ – DB FILE SEQUENTIAL READ – DIRECT PATH READ そもそも、これらの違いは何だった? 5
  • 6. Oracle READ Performance – DB FILE SCATTERED READ このイベントは、ユーザー・プロセスがSGAバッファ・キャッシュにバッファ を読み取り、物理I/Oコールが戻るまで待機することを意味します。 db file scattered readは、データを複数の不連続メモリー位置に読み取るた めに散布読取りを発行します。散布読取りは通常、マルチブロック読取りで す。全体スキャンの他、(索引の)高速全スキャンでも行うことができます。 db file scattered read待機イベントは、全体スキャンが発生していることを 識別します。バッファ・キャッシュへの全体スキャンを実行すると、読み取ら れたブロックは物理的に相互に接近していないメモリー位置に読み取られま す。このような読取りが 散布読取りコールと呼ばれるのは、ブロックがメモ リー全体に分散されているからです。… Oracle Databaseパフォーマンスチューニングガイド11gリリース2より 通常、パラレルクエリーでないフルスキャンで発生することが多かった SHINKUBOパフォーマンスチューニングガイド11gリリース2より 6
  • 7. Oracle READ Performance – DB FILE SEQUENTIAL READ このイベントは、ユーザー・プロセスがSGA内のバッファ・キャッシュにバッ ファを読み取り、物理I/Oコールが戻るまで待機することを意味します。順次 読取りは、単一ブロック読取りです。 単一ブロックI/Oは通常、索引を使用した結果です。非常にまれなケースとし て、エクステントの境界のため、またはバッファ・キャッシュ内にバッファが 存在するため、全表スキャン・コールが単一ブロック・コールに切り捨てられ ることがあります。これらの待機もdb file sequential readとして現れます。 Oracle Databaseパフォーマンスチューニングガイド11gリリース2より 通常、インデックススキャンで発生 SHINKUBOパフォーマンスチューニングガイド11gリリース2より 7
  • 8. Oracle READ Performance – DIRECT PATH READ SGAのバッファ・キャッシュではなく、ディスクからPGAに直接バッファの読取 りを実行しているセッションは、このイベントで待機します。I/Oサブシステ ムが非同期I/Oをサポートしない場合、各待機は物理読取りリクエストに対応 します。 I/Oサブシステムが非同期I/Oをサポートする場合、このプロセスでは読取りリ クエストの発行を、PGAに存在するブロックの処理に重複させることができま す。プロセスがディスクからまだ読み取られていないPGA内のブロックにアク セスしようとする場合、待機コールを発行し、このイベントの統計を更新しま す。したがって、待機数は必ずしも読取りリクエスト数と同じではありません (db file scattered readおよびdb file sequential readとは異なります)。 Oracle Databaseパフォーマンスチューニングガイド11gリリース2より 通常、パラレルクエリー(フルスキャン)で発生することが多かった SHINKUBOパフォーマンスチューニングガイド11gリリース2より 8
  • 9. Oracle READ Performance DB FILE SCATTERED READ/DB FILE SEQUENTIAL READ/DIRECT PATH READ Oracle Databaseパフォーマンスチューニングガイド11gリリース2より 9
  • 10. Dive into READ Performance – DB FILE SCATTERED READ スループット重視のI/Oパターン – DB FILE SEQUENTIAL READ IOPS(レイテンシー)重視のI/Oパターン – DIRECT PATH READ スループット重視のI/Oパターン でも、DB FILE SCATTERED READとは違う 10
  • 11. Check READ Performance baseline – スループットが高いとは “大きめのI/Oサイズで、1回のI/O処理にはちょっと 頑張ってもらって、単位時間あたりの処理量を稼ぐ” 1人で沢山、運ぶんだぜ~。 ワイルドだろ~。 – IOPSが高いとは “小さめのI/Oサイズで、1回のI/O処理を軽くしてあげ て、単位時間あたりの処理数を稼ぐ” 1人で何回も運べるんだぜ~。 ワイルドだろ~。 11
  • 12. Dive into READ Performance – あれこれ言う前に “OSレイヤーでのI/Oパターンとスループット/IOPS を理解する必要がある” – ここを押さえないと “Oracleレイヤーの話をいくらしても、威力が半減” 12
  • 13. Check READ Performance baseline – とりあえず… – ベンチマークとってみます。 13
  • 14. Check READ Performance baseline – スループット Throughput (MB) 1000 900 900 800 700 600 500 400 300 200 100 13 0 sequential_1MB random_8KB 14
  • 15. Check READ Performance baseline – IOPS IOPS 2000 1800 1742 1600 1400 1200 1000 900 800 600 400 200 0 sequential_1MB random_8KB 15
  • 16. Check READ Performance baseline – スループット Throughput (MB) 6000 5155 5000 4000 3000 2000 900 1000 0 sequential_1MB_HDD sequential_1MB_SSD 16
  • 17. Check READ Performance baseline – IOPS IOPS 250000 206761 200000 150000 100000 50000 1742 0 random_8KB_HDD random_8KB_SSD 17
  • 18. Oracle READ Performance 大事なので、もう一度言います。 同一のSQL文をネタにして、 同一の実行計画により、 異なるI/Oパターンを発生させ、 I/Oのアクセスパターンで、 いろいろ、違うんだなぁーという素朴な気持ちを 共有していく、 世界初の試みとなります。 18
  • 19. Dive into Oracle READ Performance – どうすれば良いはない。それが現実だ 19
  • 20. Check Oracle READ Performance – Oracle I/O Pattern Elapsed Time (sec) 120 101 100 このパターンは極端 ですけど、ワイド 80 レンジスキャンが 非効率という事を 60 OSのI/O特性から この違いは何? 見た場合と一緒 40 20 20 10 0 DIRECT PATH READ DB FILE SCATTERED READ DB FILE SEQUENTIAL READ 20
  • 21. Logical/Physical I/O vs. Direct I/O – DB FILE SCATTERED READ vs. DIRECT PATH READ – 大事なことなのでもう一度まとめます。 – 両者の違いはSGA(Buffer Cache)を経由するか否か – SGA(Buffer Cache)を経由するとは? 21
  • 22. Logical/Physical I/O vs. Direct I/O – DB FILE SCATTERED READ vs. DIRECT PATH READ – 両者のI/Oに違いは… ありますが… – さらに違うのは、当然、キャッシュの読み込み量 – もっと顕著なのは、あのラッチの取得回数 22
  • 23. Logical/Physical I/O vs. Direct I/O – DB FILE SCATTERED READ vs. DIRECT PATH READ DB FILE SCATTERED READ 288 919 io_submit DIRECT PATH READ 3552 io_getevents 323 pread others 3551 io_submit 6408 DB FILE SCATTERED READ(NO BUFFER) io_getevents 6325 317 others io_submit 6481 io_getevents 6491 others 23
  • 24. Logical/Physical I/O vs. Direct I/O – DB FILE SCATTERED READ vs. DIRECT PATH READ cache buffers chains cache buffers lru chain 2500000 3000 2200211 2639 2500 2000000 2000 1500000 1500 1000000 1000 500000 500 6136 10 0 0 DIRECT PATH READ DB FILE SCATTERED READ DIRECT PATH READ DB FILE SCATTERED READ 24
  • 25. Logical/Physical I/O vs. Direct I/O – DB FILE SCATTERED READ vs. DIRECT PATH READ – そうです。DB FILE SCATTERED READはキャッシュ経 由ですので、どうしても、キャッシュ上のブロック の存在チェックと空き領域のチェックが必要 – さらに、状況が悪いと、DB FILE SEQUENTIAL READ が、気持よく動いているOLTP系処理のエコシステム を崩すこともあります。 * 単純にDIRECT PATH READが優れているという話 ではありません!! 25
  • 26. Check Oracle READ Performance – Oracle I/O Pattern Elapsed Time (sec) 200 177 180 160 140 Disk I/OとBuffer Cache 120 メンテナンスのコストバランス 101 100 が変われば、パフォーマンス SSD バランスも変わる HDD 80 60 45 40 30 20 20 10 0 DIRECT PATH READ DB FILE SCATTERED READ DB FILE SEQUENTIAL READ 26
  • 27. Tuning Oracle READ Performance – OracleのI/Oまわりをチューニングするとは – SQL文というある種アプリケーションのチューニング の重要性は疑いようもありません。が、ちょっと違 うアプローチもあるんです – そう、それはもっとプリミティブな世界 – 同じH/W、同じSQL文、同じ実行計画。でも、パ フォーマンスが大きく異なる世界。 27
  • 28. Conclusion 無骨とも思えるOracleのI/O一つとってもプリミティブな 世界は味わい深い。 表面上の実行計画を眺めていても、解決できない問題も あるんです。 Oracleが示す各種イベントも理解しないと本質を見誤り ます。 待機イベントの理解にはOSによるプリミティブな動作が 理解の助けになります。 そんな素朴な気持ちが共有できていれば幸いです。 28
  • 29. Q & A Questions? 29
  • 30. Thanks ORA-03113 30