富士通

PowerGres Plus よくあるご質問(FAQ)
回答

アーキテクチャーに関するご質問

Q

「データベーススペース」とは何ですか?

A

「データベーススペース」とはユーザーデータを格納する領域です。
PowerGres Plusはビジネスユースの考え方を採用し、事前にデータベースの容量を見積り、割り当てを行い、運用を行います。
データベーススペースは自動的に拡張しないため容量が不足した場合は追加割り当てが必要になります。追加割り当てはPowerGres Plusに付属のGUIツール「PostgreSQL Plus Administrator」内の『データベースへのデータベーススペースの追加割当』で行います。
『データベースへのデータベーススペースの追加割当』は「PostgreSQL Plus Administrator」にて[データベース操作]から[データベースへのデータベーススペースの追加割当]を選択して設定できます。



Q

PowerGres Plusの定量値はどのようになっていますか?

A

PowerGres Plusの定量値を以下に示します。

項目 定量値
インスタンスが管理できるデータの最大サイズ 無制限(注1)
作成できるデータベースの数 無制限
1つのデータベースに割り当てることができるデータベーススペースの数 無制限
1つのデータベーススペースの最大サイズ 16Gバイト以内
作成できるテーブルの数 無制限(注2)
1レコードの最大サイズ 2Gバイト以内
1カラムの最大サイズ 1Gバイト
ラージオブジェクトの最大サイズ 1つあたり最大4Tバイト以内
全体で最大16Tバイト以内
最大接続数 128(Windows版V1.0では最大50)
テンポラリログの最大サイズ 15.5Gバイト以内(パッチ適用前のV1.xでは最大1Gバイト以内)
アーカイブログの最大サイズ 160Gバイト以内
データベースバッファの最大サイズ Linux版 : 2.5Gバイト以内
Windows版 : 1.5Gバイト以内

(注1)バックアップとリカバリーがインスタンスごとに行われるため、格納されているデータサイズの合計が100Gバイトを超える場合、データベースの運用が困難になると考えられます。
(注2)テーブル数やインデックス数が増えるにしたがって、必要なメモリ量が増えます。PowerGres Plusが使用できるメモリ量には以下のような制限があります。

  • Linux版の場合 : 最大2.5Gバイト
  • Windows版の場合 : 最大1.5Gバイト

そのため、作成できるテーブル数とインデックス数には限りがあります。以下を目安にしてください。

  • Linux版の場合 : 最大1000テーブル、3000インデックス
  • Windows版の場合 : 最大600テーブル、1800インデックス


Q

PowerGres PlusではトランザクションID(XID)のラップアラウンド問題が起きますか?

A

PowerGres Plusでは発生しません。
オリジナルのPostgreSQLでは、トランザクションIDのサイズが32ビットであるため、データベースを長時間運用していると、トランザクションIDのカウンタが0に戻り、古いトランザクションと新しいトランザクションの順序が逆転してしまうことがあります。このようなトランザクションIDのラップアラウンド問題を回避するために、オリジナルのPostgreSQLでは、定期的にVACUUMを行う必要があります。
PowerGres PlusではトランザクションIDが64ビットに拡張されています。そのため、実質的には無制限とみなすことができ、ラップアラウンド問題は発生しません。



Q

動作環境(SMF)とは何ですか?

A

システムログ(syslog)またはイベントログなどに、“動作環境(SMF)”に関する以下のようなメッセージが出力されることがあります。

(例)
INFO:qdg12213i:動作環境(SMF)(1)の容量拡張を開始します

動作環境(SMF)はPowerGres Plusの動作環境の一部として、セットアップ時に作成されている資源です。この資源はPowerGres Plusが管理しています。動作環境(SMF)には、インスタンスの制御情報を保持しています。データベースを運用する上で管理する情報が増えると、自動的に拡張されます。



Q

edmf_base2というプロセスのメモリ使用量が次第に増えていくのはなぜですか?

A

edmf_base2プロセスは起動時に、“データベースバッファに指定されたサイズ + ESMの動作に必要なメモリ”を確保します。ESMの動作に必要なメモリは、最大接続数に設定した値により増減します。ここで確保されたサイズはインスタンスが停止するまで確保されます。これ以上のメモリは使用しません。
ただし、topコマンドなどでは確保したメモリのうち実際に使用されているメモリのサイズが表示されるので、時間がたつにつれて使用メモリ量が増えていくように見えてしまいます。
実行中のedmf_base2プロセスが確保したメモリのサイズは下記の方法で確認することができます。

  1. edmf_spvzの子プロセスのedmf_base2プロセスIDを調べます。
    psなどで、edmf_spvzのPIDがPPIDになっているedmf_base2のPIDを探します。

  2. 1.で調べたPIDを使用して下記のコマンドを実行します。

    ps -p "PID" -o vsz

  3. 表示されたvszの値がedmf_base2プロセスが確保しているメモリのサイズとなります。

なお、edmf_base2はインスタンスの起動時に複数のプロセスが起動されますが、親プロセスと実行コンテクストの一部を共有した子プロセスとして生成されています。個々のプロセスごとに表示されているサイズを使用しているわけではありません。