この記事は、 JPOUG Advent Calendar 2024 4日目の記事です。
3日目はasahideさんの記事『 Oracle Databaseバージョンと管理モデルの選択における考察'24 』でした。
<2024年>
Oracle Databaseでは、23cから23aiへ名称が変わりました。
オンプレ版は今年はリリースされない事になりました。
Microsoftでは、Windows Server 2025がリリースされました。
バージョン情報は24H2、Hyper-Vの構成バージョンは12.0でした。
F1ではOracle Red Bull Racingの1台、Max Verstappenが大活躍でした。
今年も本物のRB20ではなく、RB18 Show Car=FIA Show Carベースでした。

<Windowsの都度接続テスト>
Oracle Databaseには、都度接続のレスポンスが遅いという弱点があります。
DB接続する度にリスナーが専用サーバプロセスをフォークするので時間が掛かります。
デフォルト設定のLinux版のOracle Databaseはマルチプロセスの為、接続の度にプロセスが生成されます。
Windows版のOracle Databaseはoracle.exe内でのマルチスレッドの為、接続の度にプロセスは増加しません。

昨年試した都度接続テストがLinuxとWindowsで差異があるのか、Hyper-Vの仮想マシンで検証しました。
オンプレ版の23aiがリリースされていないので19c Standard Edition 2のDBを、Oracle Linux 8.10とWindows Server 2022の2つの仮想マシンのリソースやDBの初期化パラメータをほぼ同等に設定して構築しました。
Host側からInstant ClientのSQL*Plusを起動し、PDB(LinuxはPDBL、WindowsはPDBW)へconnect処理を100回繰り返し、DBサーバのリスナーログのestablish行を1秒毎に集計しました。
--conn100.sql
connect <接続文字列>
connect <接続文字列>
. . . 計100回 . . .
connect <接続文字列>
connect <接続文字列>
exit

| TIME | PDBL | PDBW |
| 0:00:01 | 1 | 16 |
| 0:00:02 | 17 | 22 |
| 0:00:03 | 15 | 22 |
| 0:00:04 | 17 | 21 |
| 0:00:05 | 16 | 14 |
| 0:00:06 | 18 | 5 |
| 0:00:07 | 12 | |
| 0:00:08 | 4 |
Linux(PDBL)とWindows(PDBW)の1秒毎の最大接続数、最初と最後の1秒を除いた平均接続数は下記の通りでした。
| PDBL | PDBW | |
| Max | 18 | 22 |
| W/L | 122% | |
| Ave | 15.8 | 19.8 |
| W/L | 125% |
結果、LinuxよりWindowsの方が都度接続の性能は良好でした。
<共有サーバ接続の都度接続テスト>
都度接続の遅さへの対策としては、コネクションプーリングの使用や、共有サーバ接続への変更が挙げられます。
共有サーバのSnnnプロセス内でセッションが処理される為、プロセス数の増加を抑えられます。

デフォルト設定の場合、XDBが共有サーバ接続を使用しています。
XDB(Linuxはt19lXDB、Windowsはt19wXDB)へ同様にconnect処理を100回繰り返し、DBサーバのリスナーログのestablish行を1秒毎に集計しました。

| TIME | PDBL | PDBW | t19lXDB | t19wXDB |
| 0:00:01 | 1 | 16 | 5 | 1 |
| 0:00:02 | 17 | 22 | 18 | 23 |
| 0:00:03 | 15 | 22 | 26 | 29 |
| 0:00:04 | 17 | 21 | 29 | 27 |
| 0:00:05 | 16 | 14 | 22 | 20 |
| 0:00:06 | 18 | 5 | ||
| 0:00:07 | 12 | |||
| 0:00:08 | 4 |
Linux(t19lXDB)とWindows(t19wXDB)の1秒毎の最大接続数、最初と最後の1秒を除いた平均接続数は下記の通りでした。
| PDBL | PDBW | t19lXDB | t19wXDB | |
| Max | 18 | 22 | 29 | 29 |
| W/L | 122% | 100% | ||
| Ave | 15.8 | 19.8 | 24.3 | 26.3 |
| W/L | 125% | 108% |
結果、共有サーバ接続ではLinuxとWindowsの都度接続の性能はほぼ同等でした。
また、LinuxとWindowsの双方共、専用サーバ接続より共有サーバ接続の方が都度接続の性能は良好でした。
<まとめ>
マルチスレッド化でプロセス数が削減されると、プロセス自体のメモリ削減や、共有メモリ(SGA)のPage Table Entry使用量削減に効果があります。
LinuxでもTHREADED_EXECUTIONやDRCPでマルチスレッド化は可能ですが、デメリットもあります。
Windowsでは比較的安全にマルチスレッド対応しています。
Oracle Databaseの適切なプラットフォームや構成の選定に役立てば幸いです。
明日はNoraさんです。
TS050のレプリカ車両へ搭乗。ハイノーズで足先が高く拷問の様でした。


