Oracleのエスカレーション具合が凄いな
故あって、最近は仕事でOracleの相手をしている。普段がMySQLを相手にしていることもあって、その違いに驚く日々。Oracle様はなんというかなんでも大袈裟すぎ。
SQLのパースについてなら
- どんどん複雑な構文をサポートする
- SQLが長くなる
- パースに時間がかかる
- パース結果をキャッシュすればいいんじゃない?
- パース結果のキャッシュが実装される
- 実行計画とかも一緒にキャッシュしちゃえ
- メモリ馬鹿食い。プリペアドステートメントを使わないと遅いパース処理が毎回走って非常に遅い
- キャッシュのサイズについてチューニングが必要になる
- キャッシュサイズの自動管理機構が実装される
一時が万事こんな感じ。コネクションプーリングしかり、読み取り一貫性のための機構しかり、果てはRAC構成まで。問題に対してより大きな実装で解決しようとする力技がそこかしこに見受けられる。最近は複雑化で調整項目が増えすぎたのが流石に問題だと感じたのか、自動管理機構も入ってきているけど、これもそのうち自動管理機構をチューニングするための手法というのがノウハウになってくるんじゃないだろうか。
MySQLと違ってチューニングについのてノウハウが長期間蓄積されているため、調べれば出てくる情報自体はOracleの方が遥かに多い。それもある程度系統立って蓄積されているので、水準以上の品質の情報を学ぶことが可能。