時間:2024-02-08 11:17作者:下載吧人氣:16
前言
項目中有需求要垂直分表,即按照時間區間將數據拆分到n個表中,PostgreSQL提供了分區表的功能。分區表實際上是把邏輯上的一個大表分割成物理上的幾小塊,提供了很多好處,比如:
1、查詢性能大幅提升
2、刪除歷史數據更快
3、可將不常用的歷史數據使用表空間技術轉移到低成本的存儲介質上
那么什么時候該使用分區表呢?官方給出的指導意見是:當表的大小超過了數據庫服務器的物理內存大小則應當使用分區表,接下來結合一個例子具體記錄一下創建分區表的詳細過程。
創建分區表
首先看一下需求,現在有一張日志表,現在需要按表中的操作時間字段(operation_time)分區,如下圖:
這個需求就是一個典型的按時間創建分區表,首先看一下步驟:
1.創建父表
2.創建n個子表,每個子表都是繼承于父表
3.定義一個規則(Rule)或觸發器(Trigger),把對主表的數據插入重定向到合適的分區表
如上所示,整體的大步驟就分為以上三個,當然還可以有一些小的優化措施,比如對于每個分區,在關鍵字字段上創建一個索引等等。首先來看第一步——創建父表。
在創建分區表之前應當先創建一張“父表”,所有分區表都從它繼承,這個表中沒有數據,也不要在這個表上定義任何檢查約束及索引,現在我們就先創建這樣一張表,但之前先建一個序列:
CREATE SEQUENCE “public”.”t_sys_log_main_id_seq”
INCREMENT 1
MINVALUE 1
MAXVALUE 99999999
START 1
CACHE 1;
ALTER TABLE “public”.”t_sys_log_main_id_seq” OWNER TO “postgres”;
網友評論