高見 直輝
takam****@orega*****
2017年 8月 15日 (火) 16:57:22 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コマンドを使ってみるのもいいかもしれません。 必要なのが“PostgreSQLのインデックス毎のファイルサイズ合計”なので、このコマンドの結果をインデッ クスに紐づける手間を考えるとあまり変わらないかな、と考えています。 > "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が含まれているので > インデックスに関係しているものだとわかります。 column_listコマンドのflagsと同じものですよね? > > この方法ですと、データ量に比例した差分が発生したため原因を調べたところ、『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も存在します。 > ということから算出してみるのはいかがでしょう。 上記手順に以下のものを加えてみます。 4.3の結果でflagsに『COLUMN_INDEX』が含まれている場合、パスに『.c』を加えたファイルパスを取得 ----------------------------- 高見 直輝 <takam****@orega*****> 株式会社オレガ TEL:03-3267-0150 FAX:03-3267-0180