- EDB
- PostgreSQL
今さら聞けない!?WALアーカイブのベストプラクティス
PostgreSQL開発に多く貢献しているEnterpriseDB社による WALアーカイブ設定に関するベストプラクティスをご紹介します。
create or replace procedure double_proc(v_src number, v_dest out number) is begin v_dest := v_src * 2; end;
Dim command As EDBCommand = New EDBCommand("double_proc(:in_param, :out_param)", conn)
command.CommandType = CommandType.StoredProcedure
command.Parameters.Add(
New EDBParameter(
"in_param",
EDBTypes.EDBDbType.Integer,
100,
"in_param",
ParameterDirection.Input, False, 2, 2,
System.Data.DataRowVersion.Current,
10
)
)
command.Parameters.Add(
New EDBParameter(
"out_param",
EDBTypes.EDBDbType.Integer,
100,
"out_param",
ParameterDirection.Output, False, 2, 2,
System.Data.DataRowVersion.Current,
1
)
)
' prepareを実行
command.Prepare()
' INパラメータに10を指定し実行
command.Parameters("in_param").Value = 10
command.ExecuteNonQuery()
' OUTパラメータには10*2の20が代入されている
Console.WriteLine(command.Parameters("out_param").Value)
create or replace procedure refcur_proc(v_deptno number, v_result out sys_refcursor) is begin open v_result for select ename from emp where deptno = v_deptno; end;
Dim tran As EDBTransaction = conn.BeginTransaction() ' point1
Dim command As EDBCommand = New EDBCommand("refcur_proc(:in_param, :out_param)", conn)
command.CommandType = CommandType.StoredProcedure
command.Parameters.Add(
New EDBParameter(
"in_param",
EDBTypes.EDBDbType.Integer,
100,
"in_param",
ParameterDirection.Input, False, 2, 2,
System.Data.DataRowVersion.Current,
10
)
)
command.Parameters.Add(
New EDBParameter(
"out_param",
EDBTypes.EDBDbType.RefCursor, ' point2
1000,
"out_param",
ParameterDirection.Output, False, 2, 2,
System.Data.DataRowVersion.Current,
DBNull.Value
)
)
command.Prepare()
command.Parameters("in_param").Value = 10
command.ExecuteNonQuery()
Dim reader As EDBDataReader = command.Parameters("out_param").Value ' point3
:
reader.Close()
tran.Rollback()
EnterpriseDB.EDBClient.EDBException: cursor "unnamed portal 1" does not exist
|
|---|
2011年にアシストに入社してからサポートセンターでOracle DatabaseやPostgreSQL、EDB Postgres Advanced Server(EPAS)といったデータベース製品を中心に担当しています。個人的にJavaやNode.js、Python等を触っていますので、PostgreSQLと絡めてアプリケーション周りの情報をお送りしていきます。
■本記事の内容について
本記事に記載されている製品およびサービス、定義及び条件は、特段の記載のない限り本記事執筆時点のものであり、予告なく変更になる可能性があります。あらかじめご了承ください。
■商標に関して
・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
PostgreSQL開発に多く貢献しているEnterpriseDB社による WALアーカイブ設定に関するベストプラクティスをご紹介します。
EDB社が提供するPostgreSQLの拡張機能「system_stats」はPostgreSQL ユーザーがパフォーマンス問題に取り組む際の非常に強力なツールになります。SQLクエリでOS情報を取得できるため、DBエンジニアにとってはパフォーマンスの監視が格段に簡単になります。テストした結果をご紹介します。
PostgreSQLのオプティマイザがインデックスを適切に使用できない理由は様々ですが、本記事ではJDBC⇔PostgreSQL間でデータ型の不一致がインデックスの使用にどういった悪影響を及ぼすかを見ていきます