[groonga-dev,04431] Re: PGROONGAのインデックスファイルの容量を取得する方法は?

アーカイブの一覧に戻る

Kentaro Hayashi hayas****@clear*****
2017年 8月 14日 (月) 17:16:46 JST


林です。

On Mon, 07 Aug 2017 18:03:39 +0900
高見 直輝 <takam****@orega*****> wrote:

> 御無沙汰しております。高見です。
>
> PGROONGAのインデックスごとのファイルの容量(ストレージ使用量)を、以下の手順で取得しています。
> 1.インデックスの名前から内部テーブル名(Sources【整数】)を取得
> 2.table_listコマンドの結果から、以下の条件に当てはまるレコードのファイルパスを取得
>   テーブル名が1と一致する
>   テーブル名がLexicon【1の整数部分】と前方一致する
> 3.column_listコマンドを2で取得した各テーブル名で実行し、結果のレコードからファイルパスを取得
>
> 2と3で取得したファイルパスからファイルサイズを取得、合計値を算出しています。

というのであれば、object_listコマンドを使ってみるのもいいかもしれません。

    "Lexicon16713_0.index": {
      "id": 265,
      "name": "Lexicon16713_0.index",
      "opened": false,
      "n_elements": 4,
      "type": {
        "id": 72,
        "name": "column:index"
      },
      "flags": {
        "value": 32770,
        "names": "COLUMN_INDEX|PERSISTENT"
      },
      "path": "/var/lib/pgsql/9.6/data/base/16384/pgrn.0000109",
      "range": {
        "id": 261,
        "name": "Sources16713"
      },
      "sources": [
        {
          "id": 264,
          "name": "Sources16713.id"
        }
      ]
    },

↑はobject_listコマンドの出力の一部です。flags.namesにCOLUMN_INDEXが含まれているので
インデックスに関係しているものだとわかります。

> この方法ですと、データ量に比例した差分が発生したため原因を調べたところ、『pgrn.【整数】.c』ファ
> イルが集計対象になっていませんでした。
>
> これはインデックスに属するファイルなのでしょうか?属している場合、他のファイルのようにパスを取得
> することは出来ますでしょうか?

.cファイルについて、インデックスに属するファイルというのであっています。
ただし、このファイルのパスを取得する方法はありません。
ありませんが、インデックスカラムの場合.cも一緒に作られます。
↑の例だと/var/lib/pgsql/9.6/data/base/16384/pgrn.0000109があれば、
/var/lib/pgsql/9.6/data/base/16384/pgrn.0000109.cも存在します。
ということから算出してみるのはいかがでしょう。

--
Kentaro Hayashi <hayas****@clear*****>
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: 無し
型:         application/pgp-signature
サイズ:     833 バイト
説明:       無し
ダウンロード 



groonga-dev メーリングリストの案内
アーカイブの一覧に戻る