狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

單表數據量 200 GB,PostgreSQL 怎么應對?

admin
2024年7月18日 11:4 本文熱度 975

導讀

當前運行的 Oracle 數據庫,有個大表數據量幾百 GB,擔心 PostgreSQL 應付不了?其實,不用擔心,PostgreSQL 有各種應付大數據量存儲的武器,比如:分區表。

為什么要對表進行分區?

表分區允許將一個大表拆分為多個小表,這樣可以帶來以下好處:

  • • 較小的表在讀取和寫入方面速度更快。

  • • 您可以非常高效地刪除整個分區,而不是逐行刪除數據。

  • • 由于 PostgreSQL 知道如何修剪未用到的分區,因此您可以將分區用作一種粗略索引。例如,通過按日期劃分表,您可能不再需要日期字段上的索引,而是使用順序掃描。

  • • 很少使用的分區可以移動到更便宜的存儲中。

分區方式

假設我們有一個表:

CREATE TABLE measurements (
  id int8 NOT NULL,
  value float8 NOT NULL,
  date timestamptz NOT NULL
);

您可以通過提供用作分區鍵的列,來對該表進行分區:

CREATE TABLE measurements (
  id int8 NOT NULL,
  value float8 NOT NULL,
  date timestamptz NOT NULL
PARTITION BY RANGE (date);

PostgreSQL 支持多種分區方式,這些方式的區別僅在于它們為分區鍵指定行值的方式。

按范圍分區

按范圍分區允許為分區指定一個值的范圍,例如,我們可以將每個月的數據存儲在一個單獨的分區中:

CREATE TABLE measurements_y2021m01 PARTITION OF measurements
FOR VALUES FROM ('2021-01-01'TO ('2021-02-01');

按列表分區

列表分區允許為分區指定一個值列表,例如,我們可以將一小部分經常訪問的數據存儲在熱分區中,并將其余的數據移動到冷分區:

CREATE TABLE measurements (
  id int8 PRIMARY KEY,
  value float8 NOT NULL,
  date timestamptz NOT NULL,
  hot boolean
PARTITION BY LIST (hot);

CREATE TABLE measurements_hot PARTITION OF measurements
FOR VALUES IN (TRUE);

CREATE TABLE measurements_cold PARTITION OF measurements
FOR VALUES IN (NULL);

然后,您可以通過更改hot列,在分區之間移動行:

-- Move rows to measurements_hot
UPDATE measurements SET hot = TRUE;

-- Move rows to measurements_cold
UPDATE measurements SET hot = NULL;

按哈希分區

按哈希分區允許將行均勻地分布到一組表中,例如,我們可以為表創建 3 個分區,并使用一種相除取余的哈希方法,為行選擇一個分區:

CREATE TABLE measurements (
  id int8 PRIMARY KEY,
  value float8 NOT NULL,
  date timestamptz NOT NULL
PARTITION BY HASH (id);

CREATE TABLE measurements_1 PARTITION OF measurements
FOR VALUES WITH (MODULUS 3, REMAINDER 0);

CREATE TABLE measurements_2 PARTITION OF measurements
FOR VALUES WITH (MODULUS 3, REMAINDER 1);

CREATE TABLE measurements_3 PARTITION OF measurements
FOR VALUES WITH (MODULUS 3, REMAINDER 2);

由于使用了哈希,這些分區將會接收大致相同數量的行。

管理分區

PostgreSQL 允許分離和附加分區:

ALTER TABLE measurements DETACH PARTITION measurements_y2021m01;
ALTER TABLE measurements ATTACH PARTITION measurements_y2021m01
FOR VALUES FROM ('2021-01-01'TO ('2021-02-01');

您可以使用這些命令對現有表進行分區,而無需移動任何數據:

-- Use the existing table as a partition for the existing data.
ALTER TABLE measurements RENAME TO measurements_y2021m01;

-- Create the partitioned table.
CREATE TABLE measurements (LIKE measurements_y2021m01 INCLUDING DEFAULTS INCLUDING CONSTRAINTS)
PARTITION BY RANGE (date);

-- Attach the existing partition with open left constraint.
ALTER TABLE measurements ATTACH PARTITION measurements_y2021m01
FOR VALUES FROM ('0001-01-01'TO ('2021-02-01');

-- Use proper constraints for new partitions.
CREATE TABLE measurements_y2021m02 PARTITION OF measurements
FOR VALUES FROM ('2021-02-01'TO ('2021-03-01');

總結

本教程介紹了如何在 PostgreSQL 中,使用表分區將大型數據表拆分為較小的部分。


該文章在 2024/7/18 12:14:38 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved