PostgreSQL分區表創建、分區查詢等語法示例


查詢分區表

SELECT
   nmsp_parent.nspname AS parent_schema,
   parent.relname AS parent,
   nmsp_child.nspname AS child_schema,
   child.relname AS child,
   child.oid AS child_oid
FROM
   pg_inherits
JOIN pg_class parent ON pg_inherits.inhparent = parent.oid
JOIN pg_class child ON pg_inherits.inhrelid = child.oid
JOIN pg_namespace nmsp_parent ON nmsp_parent.oid = parent.relnamespace
JOIN pg_namespace nmsp_child ON nmsp_child.oid = child.relnamespace
WHERE
   parent.relname = '{tb_name}'
ORDER BY
   child_oid DESC

創建分區表及索引示例

CREATE TABLE "public"."vpn_build_inbound_log" (
    "id" int8 DEFAULT nextval('vpn_build_inbound_log_id'::regclass) NOT NULL,
    "it_code" varchar(64) COLLATE "default" DEFAULT ''::character varying NOT NULL,
    "inside_port" int4 DEFAULT 0 NOT NULL,
    "manager" varchar(64) COLLATE "default" DEFAULT ''::character varying NOT NULL,
    "employee_id" varchar(16) COLLATE "default" DEFAULT ''::character varying NOT NULL,
    "vpn_ad_group" varchar(32) COLLATE "default" DEFAULT ''::character varying NOT NULL,
    "vpn_acl_name" varchar(32) COLLATE "default" DEFAULT ''::character varying NOT NULL,
    "clock" int8 DEFAULT 0 NOT NULL,
    "application" varchar(255) COLLATE "default" DEFAULT ''::character varying,
    "protocol" int4,
    "inside_ip" inet,
    CONSTRAINT "vpn_build_inbound_log_pkey" PRIMARY KEY ("id", "clock")
) INHERITS ("public"."vpn_build_inbound_log") WITH (OIDS=FALSE);

CREATE TABLE IF NOT EXISTS "public"."vpn_build_inbound_log_default" PARTITION OF "public"."vpn_build_inbound_log" DEFAULT; // 創建default分區, 存儲容錯
CREATE INDEX IF NOT EXISTS "vpn_build_inbound_log_clock_idx" ON "public"."vpn_build_inbound_log" USING btree (clock); // 創建索引
CREATE INDEX IF NOT EXISTS "vpn_build_inbound_log_it_code_idx" ON "public"."vpn_build_inbound_log" USING btree (it_code); // 創建索引
CREATE UNIQUE INDEX "vpn_build_inbound_log_pkey" ON "public"."vpn_build_inbound_log" USING btree (id, clock); // 創建聯合索引

根據時間段創建新分區

CREATE TABLE IF NOT EXISTS {partition_name} PARTITION OF {tb_name} FOR VALUES FROM ({start_timestamp}) TO ({end_timestamp});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM