2024年12月04日

[JPOUG Advent Calendar] Oracle on Hyper-V 2024

charade_oo4oと申します。
この記事は、 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のレプリカ車両へ搭乗。ハイノーズで足先が高く拷問の様でした。

posted by charade at 00:00| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。