Enviar búsqueda
Cargar
BtoCでバインド変数
•
0 recomendaciones
•
1,602 vistas
Yoshito Ueki
Seguir
Denunciar
Compartir
Denunciar
Compartir
1 de 22
Descargar ahora
Descargar para leer sin conexión
Recomendados
TIME_WAITに関する話
TIME_WAITに関する話
Takanori Sejima
ぼくがかんがえたさいきょうの☆きっくすたーと☆
ぼくがかんがえたさいきょうの☆きっくすたーと☆
Naoya Nakazawa
Ruby build
Ruby build
Yuichiro Naito
Js kusen
Js kusen
Net Kanayan
最近の身の回りの電力事情
最近の身の回りの電力事情
Kenichiro MATOHARA
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
Hideyuki Takeuchi
Jvm operation casual talks
Jvm operation casual talks
oranie Narut
JVM! JVM! JVM!
JVM! JVM! JVM!
Masaaki HIROSE
Recomendados
TIME_WAITに関する話
TIME_WAITに関する話
Takanori Sejima
ぼくがかんがえたさいきょうの☆きっくすたーと☆
ぼくがかんがえたさいきょうの☆きっくすたーと☆
Naoya Nakazawa
Ruby build
Ruby build
Yuichiro Naito
Js kusen
Js kusen
Net Kanayan
最近の身の回りの電力事情
最近の身の回りの電力事情
Kenichiro MATOHARA
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
Hideyuki Takeuchi
Jvm operation casual talks
Jvm operation casual talks
oranie Narut
JVM! JVM! JVM!
JVM! JVM! JVM!
Masaaki HIROSE
binary log と 2PC と Group Commit
binary log と 2PC と Group Commit
Takanori Sejima
CPUに関する話
CPUに関する話
Takanori Sejima
yet another all-in-one cloudfoundry
yet another all-in-one cloudfoundry
Ken Ojiri
MySQL 初めてのチューニング
MySQL 初めてのチューニング
Craft works
sysloadや監視などの話(仮)
sysloadや監視などの話(仮)
Takanori Sejima
CasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用Tips
Naoki Sega
Garage labsサーバー部11U final
Garage labsサーバー部11U final
Takehito Tanabe
MySQLの運用でありがちなこと
MySQLの運用でありがちなこと
Hiroaki Sano
MongoDB on EC2 #mongodbcasual
MongoDB on EC2 #mongodbcasual
Yasuhiro Matsuo
MongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステム
Hitoshi Asai
Eucalyptus on OpenStack
Eucalyptus on OpenStack
irix_jp
Jubatus 新機能ハイライト
Jubatus 新機能ハイライト
JubatusOfficial
Seasar conference 2015 sa-compojure
Seasar conference 2015 sa-compojure
Yoshitaka Kawashima
Debian Update: ~ Jessie, Stretch, Buster ~
Debian Update: ~ Jessie, Stretch, Buster ~
Youhei SASAKI
モダンブラウザストレージ
モダンブラウザストレージ
Kazuyuki Mori
Rumpを使ってみる
Rumpを使ってみる
Masaru Oki
fukinfra Vol3 LT 20120629
fukinfra Vol3 LT 20120629
学 松崎
Metaspace
Metaspace
Yasumasa Suenaga
membase
membase
Yohei Sasaki
apasec001-kawai
apasec001-kawai
Hidemi Kawai
超先取りShenandoahGC
超先取りShenandoahGC
Yohei Oda
20141108 俺のエンジニアリング #devlove
20141108 俺のエンジニアリング #devlove
Takao Oyobe
Más contenido relacionado
La actualidad más candente
binary log と 2PC と Group Commit
binary log と 2PC と Group Commit
Takanori Sejima
CPUに関する話
CPUに関する話
Takanori Sejima
yet another all-in-one cloudfoundry
yet another all-in-one cloudfoundry
Ken Ojiri
MySQL 初めてのチューニング
MySQL 初めてのチューニング
Craft works
sysloadや監視などの話(仮)
sysloadや監視などの話(仮)
Takanori Sejima
CasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用Tips
Naoki Sega
Garage labsサーバー部11U final
Garage labsサーバー部11U final
Takehito Tanabe
MySQLの運用でありがちなこと
MySQLの運用でありがちなこと
Hiroaki Sano
MongoDB on EC2 #mongodbcasual
MongoDB on EC2 #mongodbcasual
Yasuhiro Matsuo
MongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステム
Hitoshi Asai
Eucalyptus on OpenStack
Eucalyptus on OpenStack
irix_jp
Jubatus 新機能ハイライト
Jubatus 新機能ハイライト
JubatusOfficial
Seasar conference 2015 sa-compojure
Seasar conference 2015 sa-compojure
Yoshitaka Kawashima
Debian Update: ~ Jessie, Stretch, Buster ~
Debian Update: ~ Jessie, Stretch, Buster ~
Youhei SASAKI
モダンブラウザストレージ
モダンブラウザストレージ
Kazuyuki Mori
Rumpを使ってみる
Rumpを使ってみる
Masaru Oki
fukinfra Vol3 LT 20120629
fukinfra Vol3 LT 20120629
学 松崎
Metaspace
Metaspace
Yasumasa Suenaga
membase
membase
Yohei Sasaki
apasec001-kawai
apasec001-kawai
Hidemi Kawai
La actualidad más candente
(20)
binary log と 2PC と Group Commit
binary log と 2PC と Group Commit
CPUに関する話
CPUに関する話
yet another all-in-one cloudfoundry
yet another all-in-one cloudfoundry
MySQL 初めてのチューニング
MySQL 初めてのチューニング
sysloadや監視などの話(仮)
sysloadや監視などの話(仮)
CasualなMongoDBのサービス運用Tips
CasualなMongoDBのサービス運用Tips
Garage labsサーバー部11U final
Garage labsサーバー部11U final
MySQLの運用でありがちなこと
MySQLの運用でありがちなこと
MongoDB on EC2 #mongodbcasual
MongoDB on EC2 #mongodbcasual
MongoDBではじめるカジュアルなタイムラインシステム
MongoDBではじめるカジュアルなタイムラインシステム
Eucalyptus on OpenStack
Eucalyptus on OpenStack
Jubatus 新機能ハイライト
Jubatus 新機能ハイライト
Seasar conference 2015 sa-compojure
Seasar conference 2015 sa-compojure
Debian Update: ~ Jessie, Stretch, Buster ~
Debian Update: ~ Jessie, Stretch, Buster ~
モダンブラウザストレージ
モダンブラウザストレージ
Rumpを使ってみる
Rumpを使ってみる
fukinfra Vol3 LT 20120629
fukinfra Vol3 LT 20120629
Metaspace
Metaspace
membase
membase
apasec001-kawai
apasec001-kawai
Destacado
超先取りShenandoahGC
超先取りShenandoahGC
Yohei Oda
20141108 俺のエンジニアリング #devlove
20141108 俺のエンジニアリング #devlove
Takao Oyobe
20140301ハッカーズチャンプルー告知lt
20140301ハッカーズチャンプルー告知lt
Koichiro Nishijima
How to customize redmine public
How to customize redmine public
Hirotaka Nishimiya
困らない程度のJDK入門
困らない程度のJDK入門
Yohei Oda
私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由
増田 亨
Destacado
(6)
超先取りShenandoahGC
超先取りShenandoahGC
20141108 俺のエンジニアリング #devlove
20141108 俺のエンジニアリング #devlove
20140301ハッカーズチャンプルー告知lt
20140301ハッカーズチャンプルー告知lt
How to customize redmine public
How to customize redmine public
困らない程度のJDK入門
困らない程度のJDK入門
私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由
Similar a BtoCでバインド変数
Aurora MySQL HandMade Major VersionUp
Aurora MySQL HandMade Major VersionUp
Takafumi Nakahara
Devsの常識、DBAは非常識
Devsの常識、DBAは非常識
yoku0825
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
infinite_loop
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Yoshinori Matsunobu
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
Yuichiro Saito
VarnishCache入門Rev2.1
VarnishCache入門Rev2.1
Iwana Chan
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
B 2-1 はじめての Windows Azure
B 2-1 はじめての Windows Azure
GoAzure
activerecord-oracle_enhanced-adapterのご紹介
activerecord-oracle_enhanced-adapterのご紹介
Kevin Toyoda
SQL Server のロック概要
SQL Server のロック概要
Oda Shinsuke
Mongo dbを知ろう devlove関西
Mongo dbを知ろう devlove関西
Ryuji Tamagawa
ヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージ
Yahoo!デベロッパーネットワーク
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編
Kazuya Numata
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果
Masayuki Ozawa
Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Web Services Japan
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
infinite_loop
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
terurou
ななめ45°から見たJavaOne
ななめ45°から見たJavaOne
AdvancedTechNight
実はとても面白い...Documentation library
実はとても面白い...Documentation library
Kouta Shiobara
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
Kentaro Matsui
Similar a BtoCでバインド変数
(20)
Aurora MySQL HandMade Major VersionUp
Aurora MySQL HandMade Major VersionUp
Devsの常識、DBAは非常識
Devsの常識、DBAは非常識
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Principles of Transaction Processing Second Edition 9章 4~9節
Principles of Transaction Processing Second Edition 9章 4~9節
VarnishCache入門Rev2.1
VarnishCache入門Rev2.1
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
B 2-1 はじめての Windows Azure
B 2-1 はじめての Windows Azure
activerecord-oracle_enhanced-adapterのご紹介
activerecord-oracle_enhanced-adapterのご紹介
SQL Server のロック概要
SQL Server のロック概要
Mongo dbを知ろう devlove関西
Mongo dbを知ろう devlove関西
ヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージ
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果
Amazon Aurora Deep Dive (db tech showcase 2016)
Amazon Aurora Deep Dive (db tech showcase 2016)
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
スマートフォン×Cassandraによるハイパフォーマンス基盤の構築事例
ななめ45°から見たJavaOne
ななめ45°から見たJavaOne
実はとても面白い...Documentation library
実はとても面白い...Documentation library
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
BtoCでバインド変数
1.
BtoCでバインド変数を 使用しなかったら・・・ GMOメディア株式会社
植木義人
2.
自己紹介 Twitter ID:kingyokkun 職業:DBエンジニア 所属:GMOメディア株式会社 Oracle、MySQL、PostgreSQL、MongoDBなど の設計・構築・運用・SQLなど全般やってます。 Oracleの好きな機能はバックアップ周り。SEばか り扱っているからパーティションは嫌い!
3.
ちょっとだけ会社紹介 下のような無料のWebサービスを作っている BtoCの会社です。
4.
本題
5.
まず、バインド変数とは WHERE USER_ID=:a、これがバインド変数。 WHERE USER_ID=1000000、これがリテラル。 Oracleは実行計画を共有プールに保存する事で Parseのスピードを上げます。 バインド変数を使えば複数のSQLで実行計画を共 有できます。しかし、リテラルの形でSQLを作る とIDの数分の実行計画が保存されます。 要は上記SQLでユーザーが100万人いた場合、リ テラルだと100万個の実行計画が共有プール上に 作られるわけです。
6.
今回のDB状況 前述したように無料のWebサービスのプラット フォームに使われているデータベースです。 Oracle
11gR2 Standard 会員数 400万人程度 400万人程度 クエリ数 クエリ数 千万~1.3億 平常時) 7千万~1.3億(平常時) memory_target 36Gbyte
7.
皆さん、 バインド変数を使用する事 意識してますかー!
8.
うちは 意識してなかったー! そもそも、前任者が知らなかったようで。残念 な状態になってました。
9.
で、残念な状態
Gbyte バッファキャッシュ 8Gbyte 共有プール 共有プール 13Gbyte 13Gbyte PGA 12Gbyte 12Gbyte バッファキャッシュ よりも大きい共有 よりも大きい共有 プールって って・・・ プールって・・・
10.
ま、でも。 障害になってないし、いっか。
ん~、共有プール足らない場合は ~、共有プール足らない場合は 共有プール 場合 ORA-4031出るけど、 てないし。 ORA-4031出るけど、出てないし。 昔と違ってメモリサイズがでかく ってメモリサイズ メモリサイズがでかく なってるから、 実行計画は なってるから、古い実行計画は無理 なくフラッシュされてるんでしょ。 フラッシュされてるんでしょ なくフラッシュされてるんでしょ。 すでに運用入っているサービス 運用入っているサービスの すでに運用入っているサービスの修 ってきついんだよね~・・・。 正ってきついんだよね~・・・。
11.
そんなある日 障害! 障害
12.
対応 遅延遅延遅延状態・・・。 セッション切っても次々にたまっていくばかりだ し、行ロックもしてないのに・・・。 うー・・・・。
再起動! 再起動
13.
今日の格言 論よりリブート! Oracleエンジニアにとって大
エンジニアにとって大 エンジニアにとって ですねー 事ですねー。MySQL(特に 特 だと、 MyISAM)だと、とりあえず だと 再起動なんてやると なんてやると、 再起動なんてやると、とどめ さす事になります。 さす事になります。
14.
後で調査しました。 library cache lock、cursor
mutex:S。 共有プールでmutexが大量発生していました。実 は以前から怪しいと思っていた数値があったので、 このエラーを契機に改めて確認しました・・・。 すると。
15.
1時間に40000回のメモリフラッシュ・・・ (by Performance Insight)
共有プール空 領域の 共有プール空き領域のサー プール フラッシュで遅延を チとフラッシュで遅延を起 こしていたのね・・・ ・・・。 こしていたのね・・・。
16.
対応策 リテラルを使っているSQLを減らしました。 v$sqlareaに残っているSQL60~70万クエリ くらいを全部引っ張りだし、エディタ上で検索 かけながら、修正すべき30くらいのSQLを抽出 しました。 後は開発のお尻を叩くだけ。
17.
困ったところ IN句です。BtoCサイトだとSNS的な事をやっ たりして、友達ユーザーの情報表示をするなど INを失くすのは難しい・・・。INは引数の数が 決まってないから、バインド変数化しにくいの です。 結局、引数が1個の時だけバインド変数処理を 用意しておいて、アプリ側で引数が2個以上の 処理をリテラルにハンドリングしてもらいまし た。
18.
対応の結果 共有プール 共有プール
13G 13G→6G バッファキャッシュ 8G→14G PGA 12G 12G→13G v$sqlareaのカウント 70万→8千5百 $sqlareaの 多分、 多分、2Gくらいまではで くらいまではで きたけど、 きたけど、 このくらいにしておきまし た。
19.
メモリフラッシュ数の比較
20.
結論 バインド変数をなめてはいかん、と。 また、Oracle上級者でもバインド変数非対応イ コールORA-4031と認識している方が多いです。 昨今ではメモリが大きくなっている関係なのか、 なかなかORA-4031は出ません。しかし、メモ リのフラグメント等も手伝って、mutexが大量 発生して遅延になるようです。 特にBtoCのようなアクセス量の多いサイトで はこうなります。気をつけましょう。
21.
最後に OSSのRDBと比べて、Oracleが本当に優れてい ると思う部分はメモリの扱い。メモリ関連のパ ラメータは本当に大事ですので、理解して使い ましょうね。
22.
以上です。 ご清聴ありがとうございました。
Descargar ahora