Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Meetup! jpoug oracle cloud world - なーんでだ1

1,996 views

Published on

Published in: Technology

Meetup! jpoug oracle cloud world - なーんでだ1

  1. 1. Meetup! JPOUG at Oracle CloudWorld 2015 Tokyo #1 /Koji Shinkubo @kouji_s_0808
  2. 2. ある日、ログイン処理にちょっと変えた。 ログインしたユーザーの情報をちょっと取得するだけの SELECT文で。 何の特徴もない処理のはずだった。。。
  3. 3. 確かに、ログイン毎に実行されるSQL文だけど、 ディスクI/Oなんか ほとんどない。 はずだった。。。 でも、ディスクI/Oがハンパない。 しかも書き込みが!
  4. 4. なーんでだ?
  5. 5. では、ヒント① 通常時と異常時のEMのトップアクティビティのイメージ映 像をどうぞ。
  6. 6. Commitクラスでグーンと待機してますね では、ヒント② 上記のトップアクティビティで待機セッションの大きかっ た待機クラス(Commit)をドリルダウンしたイメージ映像を どうぞ。
  7. 7. はい、出ましたね。"log file sync" 大事なので、もう一回。"log file sync" ところで、 "log file sync"って何でしたっけ?
  8. 8. えー。時間ないので、省略します。 どうしてもという方は、以前の"特濃JPOUG"のslide share をご覧ください。 * どうもブラウザーだと一部文字が化けるようなので、ダウンロードしてもらえるとちゃんと見えるらしいです http://www.slideshare.net/kshinkub/dbts2013-jpoug-logfilesync
  9. 9. でも、"log file sync"で待機していたSQL文が確認できませ んね。 本当に、SELECTなの? 実はINSERTとか更新系のSQLをこ っそり実行しているんじゃない? とか思ってますよね。
  10. 10. 一旦SQL文が分からなかったので、該当モジュールで実行 されたSQL文を探ってみます。
  11. 11. 今回の謎を再現するための偽データなので、分かりやすく 一つSQL文がありまず。限りなく黒に近い容疑者のSQL文 (SELECT)ですね。 一応、見てみます? では、ヒント③
  12. 12. はい。 もう、分かりましたね :)
  13. 13. 答えは Sequenceオブジェクトの Cache属性が 小さすぎる(デフォルトの20)
  14. 14. 解説。など。など。
  15. 15. Sequenceオブジェクト
  16. 16. cache属性の値を超えると何が起こる? enq: SQ - contention リカーシブコール
  17. 17. リカーシブコール update seq$ set increment$=:2               , minvalue=:3               , maxvalue=:4               , cycle#=:5               , order$=:6               , cache=:7               , highwater=:8               , audit$=:9               , flags=:10  where obj#=:1
  18. 18. まとめ Sequenceのcache属性のデフォルト値は20 cache属性を超える場合、Sequenceは新たにcacheする必 要がある が、それは1セッションのみが可能(exclusiveなenqueue を取得する) なので、他のセッションはenq: SQ - contentionで待機す る さらに、その際、SEQ$へのUpdate文(リカーシブコール) が発行される なので、cache属性が小さいといろいろと問題になりますよね
  19. 19. Appendix ちなみに"log file sync"が問題に注目して、チューニングし てみると。 今度は、こうなっちゃいますよ。
  20. 20. Thanks!

×