LoginSignup
10
1

More than 3 years have passed since last update.

Autonomous Database で DRCP(データベース常駐接続プーリング)が使えるようになったので、お試ししてみる。

Last updated at Posted at 2020-02-24

表題の通り Autonomous Database で DRCP(データベース常駐接続プーリング)が使えるようになりますた。
使うのも非常に簡単なんで、お試ししてみるやで!彡(゚)(゚)

1. DRCP (データベース常駐接続プーリング)とは?

Oracle Database はマルチプロセス型のアーキテクチャなんですが、接続時の一連の処理(プロセス生成など)が高負荷です。
これを補うのがコネクション・プーリングですが、一般的にはAP層で用意するコネクション・プーリングをDB層で実装したものが DRCP です。

5.2 データベース常駐接続プーリングの理解
https://docs.oracle.com/cd/F19136_01/admin/managing-processes.html#GUID-BB76E57C-3F16-4C85-AEF6-BA14FC1B4777

2. Autonomous Database の DRCP

Autonomous Database の DRCP は下記マニュアルに記載があります。

Use Database Resident Connection Pooling with Autonomous Database
https://docs.oracle.com/en/cloud/paas/atp-cloud/atpug/connect-drcp.html#GUID-E1337EC6-4A78-4199-84F0-A2739055F3FA

使い方は簡単で、ウォレットの接続文字列に「(SERVER=POOLED)」を書き足すだけです。用意した環境に、以下のような接続文字列をコピペで tnsnames.ora に書き足してみました。

aysatp_tp_drcp = (description= (retry_count=20)(retry_delay=3)
(address=(protocol=tcps)(port=1522)(host=adb.xx-xxxxx-x.oraclecloud.com))
(connect_data=(service_name=xxxxxxxxxxxxxxxx_aysatp_tp.atp.oraclecloud.com)
(SERVER=POOLED))
^^^^^^^^^^^^^^^ここを書き足した
(security=(ssl_server_cert_dn="CN=adb.xx-xxxxx-x.oraclecloud.com,OU=Oracle ADB XXXXX,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

3. DB接続を300回ループして計測するシェル

DB接続を300回ループするシェルを書いてみて、掛かった時間を計測してみます。

#!/bin/bash

#log file
LOG_FILE="/home/opc/work/loopcon_$$.log"
: > ${LOG_FILE}

#start time
TIME1=`date +%s.%N`
echo ${TIME1} >> ${LOG_FILE}

#connection test
for i in `seq 1 300`
do
sqlplus /nolog << EOF >> /dev/null 2>&1
SET TIMING ON
CONNECT ADMIN/xxxxxxxxxxxxxx@aysatp_tp_drcp
SET TIMING OFF
EXIT
EOF
done;

#end time
TIME2=`date +%s.%N`
echo ${TIME2} >> ${LOG_FILE}

#duration
DURATION=`echo "${TIME2} - ${TIME1}" | bc`
echo "Duration is ${DURATION} sec." >> ${LOG_FILE}

時刻計算の部分は、下記の記事を参考にさせて貰いました。

dateコマンドを使って1秒未満のプログラム実行時間を計測する
https://qiita.com/kaw/items/6d71d0b57aaf57fc9059

4. DRCP無し/有りでの接続時間(300回)の割合を比較

実際に掛かった時間を直接出すと色々とアレなので、接続時間(300回)の合計を割合で比較してみます。下記の環境で実行しました。

Public Compute(踏み台) → Private Compute(※) → SGW → ATP(18c)
※18.5 Instant Client, ココでshellを実行

DRCP無しの時の接続時間(300回)を 100 とした時に、DRCP有りの接続時間(300回)の割合を出しています。
※下記は個人が独自計測した数値で、この数値をその他環境で保証するものではありません。
adb_drcp.jpg

うーん、25%改善ってところでしょうか。もう一声!彡(゚)(゚)

5. まとめ

もう少し改善するかと思ったら、DRCPで良くなるプロセス生成以外の処理が重いんですかね。暗号化部分とか……(゚ε゚ )
とまれ、どんどん良くなる Autonomous Database! 出た当初比で、接続廻りは色々と改善されている感じです。体感なんですが、詰まりにくくなった。

皆さん、Autonomous Database をどんどん使って下さいやで彡(^)(^)

10
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
1