CREATETABLElog(log_time timestamp, info text) PARTITIONBYRANGE (log_time); CREATETABLE log_2023 PARTITIONOF log FORVALUESFROM ('2023-01-01') TO ('2024-01-01');
psql 方式查询分区键
我们可以通过 psql 提供的 \d 命令就可以看到分区键信息。
1 2 3 4 5 6 7 8
postgres=# \d log Partitioned table "public.log" Column | Type | Collation | Nullable | Default ----------+-----------------------------+-----------+----------+--------- log_time | timestamp without time zone | | | info | text | | | Partition key: RANGE (log_time) Number of partitions: 1 (Use \d+ to list them.)
从上面的 Partitoin key 我们可以得知表 log 的分区键为 log_time。
SQL 方式查询分区键
有时我们可能需要通过 SQL 的方式查询表的分区键,这个时候就需要用到 pg_get_partkeydef() 函数了,如下所示,我们可以通过表的 OID 来获取分区键信息。
1 2 3 4 5
postgres=# SELECT pg_get_partkeydef('log'::regclass); pg_get_partkeydef ------------------- RANGE (log_time) (1row)
Partitioned table "public.log" Column | Type | Collation | Nullable | Default ----------+-----------------------------+-----------+----------+--------- log_time | timestamp without time zone | | | info | text | | | Partition key: RANGE (log_time) Number of partitions: 1 (Use \d+ to list them.)