Oracle OpenWorld Unconference with MySQL 復習

というわけで、Oracle OpenWorld Unconferenceに参加して発表をしてきました。直前までデータ取りをしていてやはり睡眠不足だったのですが、とても楽しかったです。JPOUGのみなさま、日本オラクルのみなさま、当日お越しいただいたみなさま、どうもありがとうございました。

Oracle Database経験者がMySQLの設計思想を知っていろいろ考える会

私のセッションでは、Oracle Database、MySQLそれぞれに対してコネクションプール、およびパラメータのバインド機構が性能にどのような影響を与えるか、という切り口で話をさせていただきました。各製品に詳しい方にとっては当たり前の話なのですが、どちらかが未経験という方にとっては新鮮に感じられたのではないかと思います。資料を公開しておきます。

先のエントリでお断りしたとおり、Oracle Databaseに関する負荷テストの結果は公開しません。ただ、昨年行われたOracle DBA & Developer Days 2011という開発者向けイベントの資料に大変よく似たグラフがありましたので、ご紹介いたします。

MySQL Connector/Jの新規接続チューニング

MySQLはコネクションプールを使わなくてもそれほど性能が低下しないという話をしたのですが、実はJavaの場合はかなり低下します。これはJDBCドライバのConnector/Jが新規接続時にいくつかのSQLを発行してしまっているためです。この件についてConnector/J開発者のMark Matthews氏が、新規接続時のSQL発行数を削減する方法をブログで解説しています。

まとめると、以下のようになります。今回の負荷テストはこれらのパラメータを設定した上で実施しています。

  • MySQLサーバに、sql_mode=STRICT_TRANS_TABLESを設定
  • JDBC接続プロパティに、cacheServerConfiguration=trueを設定
  • JDBC接続プロパティに、useLocalSessionState=trueを設定
  • JDBC接続プロパティに、characterSetResults=UTF-8を設定