A5:SQL Mk-2

開発のこと、日々のこと

PostgreSQLのパーティションテーブル表示

ホーム フォーラム A5:SQL Mk-2掲示板 PostgreSQLのパーティションテーブル表示

  • このトピックには7件の返信、1人の参加者があり、最後にヨシヒロにより1ヶ月、 3週前に更新されました。
8件の投稿を表示中 - 1 - 8件目 (全8件中)
  • 投稿者
    投稿
  • #9518 返信
    ヨシヒロ
    ゲスト

    初めまして。

    PostgreSQL10から実装されたパーティションテーブルの表示方法につて、
    テーブルの一覧表示(ツリー表示)では親テーブルのみ表示して、
    パーティションテーブルはその親テーブルに紐づくツリー表示ができないでしょうか?
    「PgAdmin4」でのツリー表示(階層表示)で、表示/非表示切り替えのイメージです。

    テーブルのパーティショニングを行うとテーブル数が膨大になるので
    親テーブルに子テーブルが関連付けて表示されるとありがたいです。
    ※現状ではSQLを発行してテーブルの関連を見るしかないので、
     階層(紐づけ)表示されると、関連も確認できるので助かります。
     
    ぜひご検討いただければ幸いです。

    #9530 返信
    松原正和
    キーマスター

    ヨシヒロさんこんにちは。
     
    前々から実装したいなとは思うものの、パーティションテーブルについてですが、実は、システムテーブルで、パーティション親テーブルに対して紐づくパーティション子テーブルを取得する方法がよく分からず、実装していません。
    (知っていたら教えてください)
     

    #9622 返信
    ヨシヒロ
    ゲスト

    こんにちは。
    返信の確認が遅くなり申し訳ございません。

    昨日に何度か投稿を送信したのですが、投稿が反映されませんでした。。
    SQLを直接記載していたからかもしれません。

    あまりこういった投稿を行ったことがありませんので、
    SQLを記載する際に使うべきタグなどあれば、記載方法を教えてください。
    あと、転載元のURLを記載する場合なども同様であれば、教えてください。

    #9623 返信
    ヨシヒロ
    ゲスト

    少し調べた程度で申し訳ございませんが、以下のSQLで確認できるような気がします。
    ※PostgreSQL 11 で確認しています。

    <確認用のパーティションテーブル作成>
    CREATE TABLE measurement (
    city_id int not null,
    logdate date not null,
    peaktemp int,
    unitsales int
    ) PARTITION BY RANGE (logdate);

    CREATE TABLE measurement_y2006m02 PARTITION OF measurement
    FOR VALUES FROM (‘2006-02-01’) TO (‘2006-03-01’);
    CREATE TABLE measurement_y2006m03 PARTITION OF measurement
    FOR VALUES FROM (‘2006-03-01’) TO (‘2006-04-01’);
    CREATE TABLE measurement_y2007m11 PARTITION OF measurement
    FOR VALUES FROM (‘2007-11-01’) TO (‘2007-12-01’);

    ※転載元:https://www.postgresql.jp/document/11/html/ddl-partitioning.html

    #9625 返信
    ヨシヒロ
    ゲスト

    【続き】
    <パーティションテーブルの抽出 その1>
    SELECT * FROM pg_class
    WHERE relkind = ‘p’ OR relispartition = true
    ORDER BY relname

    ※転載元:https://tihiro.hatenablog.com/entry/2020/01/06/162514

    #9626 返信
    ヨシヒロ
    ゲスト

    【続き】
    <パーティションテーブルの抽出 その2>
    select pt.relnamespace::regnamespace::text as schema,
    base_tb.relname as parent_table_name,
    pt.relname as table_name,
    pg_get_partkeydef(base_tb.oid) as partition_key,
    pg_get_expr(pt.relpartbound, pt.oid, true) as partition_expression
    from
    pg_class base_tb
    join pg_inherits i on i.inhparent = base_tb.oid
    join pg_class pt on pt.oid = i.inhrelid;

    ※転載元:https://qiita.com/mkyz08/items/e672c53cebd93fe74aab

    ご検討のほど、よろしくお願いいたします。

    (どうやら投稿する文字数が多かったのかもしれません。細切れでの投稿で失礼しました。)

    #9639 返信
    松原正和
    キーマスター

    ヨシヒロさんこんにちは。
     
    ありがとうございます。<パーティションテーブルの抽出 その2>はかなり使えそうな気がします。試してみたいと思いますので少々お待ちください。

    #9781 返信
    ヨシヒロ
    ゲスト

    松原様、こんにちは。

    ご確認ありがとうございます。
    実装をお待ちしております(^^)/

8件の投稿を表示中 - 1 - 8件目 (全8件中)
返信先: PostgreSQLのパーティションテーブル表示
あなたの情報:




コメントは受け付けていません。