すべてのプロダクト
Search
ドキュメントセンター

PolarDB:PolarDB for PostgreSQL (Oracleと互換) 2.0商用利用可能

最終更新日:Jun 25, 2024

2.0は商用利用可能です。

パブリックプレビューの終了日

2023年6月30日

公式リリース日

2023年7月5日

課金

サブスクリプションと従量課金の課金方法がサポートされています。 詳細については、「課金項目」をご参照ください。

メリット

2.0は、 1.0よりも高いパフォーマンスを提供します。 2.0は次の利益を提供します。

より高いパフォーマンス

次のパフォーマンス結果は、pgbenchとpolar.o.x8.xlargeクラスター、および選択のみのTPCBライクなシナリオに基づいています。

シナリオ

1.0

2.0

パフォーマンス向上

選択のみのシナリオ

109141.30

120803.95

10.69%

TPCBのようなシナリオ

49226.71

64752.41

31.54%

説明

永続パラメータ設定は、パフォーマンステスト全体で使用されます。 polar_enable_stmt_transaction_rollbackおよびpolar_default_with_rowidパラメーターはoffに設定されます。 他のパラメータはデフォルト値を使用する。

2.0は、 1.0よりも高いパフォーマンスを提供します。 TPCBのようなシナリオでは、パフォーマンスは30% 以上改善されます。 多数の接続が存在する場合、 2.0により、トランザクションのスループットが最大100% になります。

パフォーマンスをさらに向上させるために、 2.0はいくつかの並列クエリ機能を提供します。 たとえば、PL/pgSQL関数のRETURN QUERYコマンドは、クエリの並列計算をサポートしていますREFRESH MATERIALIZED VIEWコマンドは、並列クエリもサポートしています。 また、大規模データスキャンのI/Oスループットを向上させ、ブロックデバイスのI/Oスループット限界に近づくために、チャンクの並列順次スキャンをサポートします。

拡張インデックス

2.0は、B-treeインデックス (標準データベースインデックス) 内の重複データの処理を最適化して、B-treeインデックスが使用する全体的な領域を削減し、クエリのパフォーマンスを向上させます。 具体的には、Bツリーインデックス内の重複データを自動的に重複排除して圧縮し、インデックスによって占有されるスペースを削減する重複排除技術のインデックス圧縮ポリシーを導入します。 2.0は、インデックスの頻繁な更新によって引き起こされるテーブルの肥大など、Bツリーインデックスのリソース消費量が多い問題も解決します。 また、構築プロセス中にデータを事前にソートするためのGiSTインデックスを提供し、GiSTおよびSP-GiSTインデックスの生成を加速し、インデックスのサイズを縮小します。

パーティションテーブルの改善

2.0は、パーティションシステムを最適化して、パーティションテーブルのクエリパフォーマンスを向上させます。 柔軟性の高いプルーニングとパーティションのスマート結合を使用できます。 また、トリガーと論理レプリケーションを改善して、データレプリケーションと同期の効率と信頼性を高めます。

の2.0は、パーティション・プルーニング機能を強化して、サブパーティションのサブプランを減らし、キャッシュされたプランを複製し、クエリを高速化します。alter table detach | attach PARTITION concurrentステートメントを実行して、パーティションを追加または削除できます。 これにより、ロックの競合が回避され、データベースの可用性と安定性が向上します。

Parallel VACUUMガベージコレクションのメカニズム

VACUUMメカニズムは、 2.0にとって非常に重要です。 テーブルの膨張を緩和するために使用されなくなったテーブルスペースを解放できます。 ガベージコレクションの効率とパフォーマンスをさらに向上させるために、 2.0では、並列インデックス再利用メカニズムが導入されています。 並列ワーカーの数を指定して、ニーズをより適切に満たすこともできます。

これらの最適化により、 2.0は、より効率的で信頼性の高い安定した方法でデータベースを管理し、データ管理とメンテナンスを簡素化します。

最適化されたクエリ

2.0では、増分ソートが導入されています。 クエリ内の以前のステップのソートされたデータは、後続のステップのソートを加速することができる。 この最適化により、クエリのパフォーマンスと効率が大幅に向上します。

2.0は、PostgreSQLの効率的なハッシュ集計機能を利用するために、追加の種類の集計およびグループセットクエリも使用します。 これは、大きな集計を持つクエリがメモリに完全にロードされないことを意味します。 これにより、メモリ使用量とI/Oオーバーヘッドを大幅に削減できます。

2.0では、IN句の処理を高速化するための線形検索ハッシュテーブルプローブ機能がサポートされています。 パフォーマンスの向上は、複数の条件を持つSQL文や大量のデータをフィルタリングするSQL文で特に重要です。

LZ4圧縮アルゴリズムでセキュリティを強化

2.0では、LZ4アルゴリズムを使用して列を圧縮できます。 これにより、圧縮パフォーマンスが向上し、元のPGLZ圧縮方法が確保されます。 pg_read_all_datapg_write_all_dataの2つの定義済みロールを使用して、テーブル、ビュー、およびシーケンスに対する読み取り専用または書き込み専用の権限を付与することもできます。 これは、より柔軟なデータ管理方法です。

2.0を使用すると、オブジェクトのアクセス許可を制御して、データのセキュリティと信頼性を確保できます。 この最適化により、機密データが保護され、データリークやセキュリティ侵害が防止されます。

機能

2.0 は、Oracle構文との互換性が高く、パーティションテーブル、トランザクション機能、PL/SQLステートメント、パッケージ、異種接続などの一般的なOracle機能をサポートします。 また、高い同時実行性、高い書き込み負荷、並列クエリ、および論理レプリケーションの点でパフォーマンスが向上します。

2.0は、次のOracle互換機能を提供します。

Oracle互換のデータ型 (文字列、数値、バイナリデータ型など) 、およびストレージの64ビット日付型

2.0は、64ビットの日付ストレージをサポートしています。 年、月、日、時、分、秒のOracle互換の日付タイプを格納および表示できます。 char、varchar2、nvchar2、nvarchar、binary_integer、number、row、rowidのデータ型。 nls_date_formatおよびnls_timestamp_formatパラメーターを使用して、時間データ型の出力形式を制御できます。

Oracle互換オペレーター

は2.0、次の演算子関連の機能をサポートしています。decodeおよびgroup_id演算子、集計関数の演算子による順序、組み込みのバイナリ演算子間のスペースの挿入、およびマイナスセット演算子。 括弧なしでa.b関数を呼び出すことができます。 空の文字列はNULLと見なされます。

Oracle互換の文字列関数、数値関数、バイナリ関数、正規関数、サンプリング関数、および集計関数

は2.0、to_dateやadd_monthなどの時間関数、instr、lpad、rpadなどの文字列関数、rawtohex、hextoraw、vsizeなどのバイナリ関数、sys_guidなどのコーディング関数、sample関数などのサンプリング関数、regex_count、regex_reg_ex_reg_instr、.Oracle互換の集計関数を作成できます。

Oracle互換のエイリアス、列名、句、およびビュー

は、異なるレベルのサブクエリ、大文字と小文字を区別するテーブル名と列名、およびキーワードの別名で同じエイリアスを使用する2.0をサポートしています。マージ句で使用されるupdateまたはdeleteステートメントとwhere句の両方、insertおよびupdateステートメントにnamespace.table.colパラメーターを追加し、(+) 演算子をジョイントテーブルに追加します。

などの一般的なOracleビューALL_PART_KEY_COLUMNS、USER_PART_KEY_COLUMNS、DBA_PART_KEY_COLUMNS、DBA_ROLE_PRIVS、およびUSER_ROLE_PRIVSがサポートされています。

疑似列、シーケンス、DMLステートメント、DDLステートメントなどのOracle互換機能

は2.0、次の機能をサポートしています。クエリ結果の行番号をマークするrownum関数、グローバルに一意のシーケンス、サブクエリで効果的な選択、削除、更新ステートメント、select for update waitステートメント、ビューで使用されるステートメントへのマージ、基本ヒント、Rename toステートメント、alterテーブルの追加 (col1、col2) ステートメント、create directoryステートメント、create contextステートメント、および階層クエリの行の親子関係を決定するために使用されるconnect by句。

Oracle互換パーティションテーブルの作成、変更、および拡張

2.0は、Oracleスタイルのパーティションテーブルをサポートしています。 パーティションとサブパーティション、リスト、範囲、ハッシュパーティションを作成できます。 CREATE、COALESCE、DROP、EXCHANGE、MERGE、MODIFY、MOVE、RENAME、SPLIT、TRUNCATEなどの一般的なパーティション管理ステートメントをサポートします。 パーティションテーブルのテンプレートサブパーティションを作成できます。 間隔範囲パーティションは自動的に作成できます。 Oracle互換A PARTITION(B) ステートメントは、パーティションの呼び出しに使用できます。

CSNトランザクションスナップショット、自律トランザクション、およびステートメントレベルのトランザクションロールバック

2.0では、CSNトランザクションスナップショットは、MVCCのパフォーマンスを向上させるために使用される新しいメカニズムです。 トランザクションID (XID) がトランザクションスナップショットとして使用されるネイティブPostgreSQLとは異なり、CSNスナップショットはトランザクションスナップショットとして単調増加する64ビット整数値を使用します。 これにより、トランザクションスナップショットの生成が加速され、MVCCの行可視性判定パフォーマンスが向上します。

ストアドプロシージャと匿名ブロックで自律トランザクションを使用して、現在のトランザクションのコミット状態を親トランザクションから独立させることができます。

ステートメントレベルのトランザクションロールバックがサポートされています。 自動コミットが無効になっている場合、ステートメントレベルのエラーが発生した場合、現在のサブトランザクションのみがロールバックされます。 メイントランザクションは実行中のままです。

Oracle互換PL/SQLブロックの動作

は2.0、次の機能をサポートしています。$$記号なしのPL/SQL呼び出し、パラメーター値を参照するための関数とストアドプロシージャのIN、OUT、INOUTパラメーター、変数バインディングと匿名ブロックの2フェーズ操作、定数互換性、暗黙的に宣言されたレコードループ変数、次の機能をサポートします。カスタム例外変数、およびトリガーの開始および終了パラメーター。

Oracle互換パッケージの機能とセットタイプ

2.0では、カスタムパッケージを作成および削除できます。 連想配列、ネストされたテーブル、可変長配列などの共通セット型を作成および削除することもできます。 初期化、呼び出し、および値をセットに割り当てることもできます。

Oracle互換組み込みパッケージ

  • DBMS_AQパッケージは、キューにメッセージを追加したり、キューからメッセージを削除したりします。

  • DBMS_AQADMパッケージは、メッセージキューを作成および管理します。

  • DBMS_ALERTパッケージは、アラートの登録、送信、および受信を行う機能を提供します。

  • DBMS_APPLICATION_INFOパッケージは、モジュールのパフォーマンスを追跡し、モジュールをデバッグするために、データベースで実行されているモジュールまたはトランザクションの名前を記録します。

  • DBMS_CRYPTOパッケージは、保存されたデータを暗号化および復号します。 AES、DES、ハッシュ、およびメッセージダイジェストがサポートされています。

  • DBMS_JOBパッケージは、スケジュールされたタスクを作成および管理します。 スケジュールされたタスクをデータベースで実行するために送信できます。

  • DBMS_LOBパッケージは、BLOBやCLOBデータなどのラージオブジェクトにアクセスして操作するメソッドを提供します。

  • DBMS_LOCKパッケージは、現在のセッションを一定期間中断するためのスリープ組み込み関数を提供します。

  • DBMS_METADATAパッケージは、オブジェクトを再構築するためのデータベースオブジェクトのメタデータを取得します。

  • DBMS_OUTPUTパッケージは、ストアドプロシージャ、パッケージ、またはトリガーからメッセージを送信します。

  • DBMS_PIPEパッケージは、同じルーチンの異なるセッション間でパイプライン通信を開始します。

  • DBMS_RANDOMパッケージは、ランダム値を生成するためのいくつかの関数とストアドプロシージャを提供します。

  • DBMS_RLSパッケージを使用すると、仮想プライベートデータベース (VPD) が指定されたPolarDBデータベースオブジェクトを実行できます。

  • DBMS_SESSIONパッケージは、PL/SQLからセッション、ユーザー、その他の情報にアクセスするためのAPIを提供します。

  • DBMS_SQLパッケージは、動的SQLステートメントを使用してDMLおよびDDLステートメントを実行し、PL/SQL匿名ブロックを実行し、PL/SQLストアドプロシージャおよび関数を呼び出すためのAPIを提供します。

  • DBMS_UTILITYパッケージは、ユーティリティプログラムを提供します。

  • UTL_ENCODEパッケージは、異なるホスト間のデータ伝送を容易にするための一連のデータエンコードおよびデコード機能を提供します。

  • UTL_I18Nパッケージは、PL/SQLアプリケーションの国際化のためのESCAPE_REFERENCEおよびUNESCAPE_REFERENCE関数のセットを提供します。

  • UTL_RAWパッケージは、RAWデータを操作するための機能を提供します。

永続キャッシュプールとDBLink

2.0は、データベースのクラッシュまたは再起動後に元のバッファプールを予約します。 次回プログラムの起動時に、元のバッファプール情報を再利用できます。

DBLinkを使用して、PostgreSQLデータベースおよびOracleデータベースに接続できます。

サーバー側でのGBKおよびGB18030エンコーディング

2.0では、サーバーでGBKおよびGB18030エンコーディングを使用できます。 これにより、クライアントでGBKを使用する場合のコード変換コストが削減されます。

関連ドキュメント

1.0から 2.0へのデータの移行の詳細については、「異なるPolarDB for Oracleバージョンのクラスター間でのデータの移行」をご参照ください。