概要
汎用Linuxビルド(Linux – Generic)などの一部のMySQLの配布パッケージでは、OpenSSL依存関係が同じ.tar.gzアーカイブ内にバンドルされます。
新しい MySQL 8.0.46、8.4.9、および9.7.0リリースでは、これらのバンドルされたパッケージをOpenSSL 3.0から新しいOpenSSL 3.5 LTSブランチにアップグレードしています。
.rpmや.debなどのネイティブOSパッケージは、ターゲットのオペレーティング・システムによって提供されるOpenSSLバージョンを引き続き使用します。ディストリビューションによっては、すでに3.0より新しい可能性があります。
OpenSSLのアップグレードには、8.0.x (OpenSSL >= 3.5で構築されている場合)を除き、MySQLコード内のTLSの機能的の変更は含まれませんでした。この特定の構成では、ほかの MySQLブランチに対してすでに行われたように、弱いと見なされるDiffie-Hellman鍵交換方式の暗号スイートをブロックするようになりました。
メリット
OpenSSL 3.5ブランチは3.0に代わる新しい長期安定(LTS)リリースとなったため、それへ移行するのは理にかなったステップです。
この変更の理由:
- 以前のOpenSSL 3.0 LTSブランチはすでにフルサポート期間を終了(ただし2026年9月7日まではセキュリティ修正が行われます)
- OpenSSL 3.5は3.0と比べて性能が向上(テスト結果は下記参照)
- OpenSSL 3.5はポスト量子暗号(PQC)アルゴリズムを実装しており、量子コンピュータによって通信の機密性が破られることを防ぐうえで極めて重要な機能になると期待されている
ただしOpenSSLのアップグレードによってMySQLでPQCサポートが自動的に有効になるわけではありません。この実装は今後のリリースで予定されています。
パフォーマンス・テスト
Dimitri Kravtchukが複数のOpenSSLのバージョン間でのMySQLの性能比較を行っています:
- OpenSSL-1.1.1L — これまでで最も効率的で高性能なSSL (EOL)
- OpenSSL-3.0.19 — 3.0系列で最新、旧来のLTSブランチ
- OpenSSL-3.3.6
- OpenSSL-3.4.4
- OpenSSL-3.5.5 — 対象のバージョン、最新のLTSブランチ
- OpenSSL-3.6.1 — 現在の開発系列のリリース
テストはTLSのオーバーヘッドを明確にすることを基準に選ばれています (他のボトルネックの可能性をなるべく排除):
- CPUの利用がメインのテスト
- 短く高速なSQL文
- ローカルでの実行 (テストのクライアントとサーバーが同じホストに同居)
この目的のために2つのテストを実施:
- Sysbench Point-SELECTs: 最も高速な主キーでの検索をベースとしたOLTPの参照のみのワークロード
- Sysbench Re-Connect SELECTs: 上記と同じワークロードだが、SELECT実行のたびにMySQLサーバーへの再接続を行い、TLSのコードの接続初期化のオーバーヘッドへのストレステストとしたもの
この検証では、以下のシステムをテストの実行環境として利用:
- BM.48: 48cores-HT Intel, 192GB RAM, OL7
- BM.44: 44cores-HT Intel, 512GB RAM, OL7
- OCI VM X9.16: 16cores-HT Intel, 256GB RAM, OL8
- OCI VM E4.16: 16cores-HT AMD E4, 256GB RAM, OL8
以下の結果は、Dimitriによる広範なテストのうちの一部を抜粋したもので、8.4と最新の9.7.0 LTSを用いたローカルテストに焦点を当てています。つまり、8.4とほぼ同等の8.0およびネットワーク越しの結果は省いています。
テストの詳細はDimitriのブログ記事を参照してください:
http://dimitrik.free.fr/blog/posts/mysql-perf-openssl355-evaluation.html
テスト結果
Point-SELECTs ワークロード | ローカルIP
以下は、各サーバーでローカル実行し、ローカルIPポート(ループバック127.0.0.1)を使用したPoint-SELECTsワークロードのテスト結果です:
MySQL 9.7 (trunk)
BM.44

BM.48

OCI VM X9.16

OCI VM E4.16

MySQL 8.4.9
BM.44

BM.48

OCI VM X9.16

OCI VM E4.16

再接続を行いSELECTを実行するワークロード | ローカルIP
以下は、各サーバーでローカル実行し、ローカルIPポート(ループバック127.0.0.1)を使用し、再接続を行ってSELECTを実行するワークロードのテスト結果です。
MySQL 9.7 (trunk)
BM.44

BM.48

OCI VM X9.16

OCI VM E4.16

MySQL 8.4.9
BM.44

BM.48

OCI VM X9.16

OCI VM E4.16

結論
パフォーマンスの観点では、OpenSSL 1.1.1は依然として大半の場合で最高のスループットを実現する最良のリリースですが、2023年にサポート終了となっています。
朗報なのは、OpenSSL 3.5はOpenSSL 3.0よりも性能が向上しており、場合によってはその差はかなり大きいということです。
将来を見据えると、OpenSSL 3.6.1により、今後のリリースでさらなるパフォーマンス向上が期待でき、いつかはOpenSSL 1.1.1に追いつく日が来るかもしれません。
MySQLをご利用いただきありがとうございます!

