精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

分布式 PostgreSQL 集群(Citus)官方示例-時間序列數據

數據庫 PostgreSQL
我們可以將單節點表分區技術與 Citus 的分布式分片相結合,形成一個可擴展的時間序列數據庫。這是兩全其美的。它在 Postgres 的聲明性表分區之上特別優雅。

本文轉載自微信公眾號「黑客下午茶」,作者為少。轉載本文請聯系黑客下午茶公眾號。

 PostgreSQL 在時間序列工作負載中,應用程序(例如一些實時應用程序查詢最近的信息,同時歸檔舊信息。

  • https://docs.citusdata.com/en/v10.2/sharding/data_modeling.html#distributing-by-entity-id

為了處理這種工作負載,單節點 PostgreSQL 數據庫通常會使用表分區將一個按時間排序的大數據表分解為多個繼承表,每個表包含不同的時間范圍。

  • https://www.postgresql.org/docs/current/static/ddl-partitioning.html

將數據存儲在多個物理表中會加速數據過期。在單個大表中,刪除行會產生掃描以查找要刪除的行,然后清理清空空間的成本。另一方面,刪除分區是一種與數據大小無關的快速操作。這相當于簡單地刪除磁盤上包含數據的文件。

將數據存儲在多個物理表中會加快數據過期的速度。在一個大表中,刪除行需要掃描以找到要刪除的行,然后清空空的空間。另一方面,刪除分區是一種與數據大小無關的快速操作。這相當于簡單地刪除磁盤上包含數據的文件。

  • https://www.postgresql.org/docs/current/static/routine-vacuuming.html

對表進行分區還可以使每個日期范圍內的索引更小更快。對最近數據進行的查詢很可能對適合內存的 hot 索引進行操作。這加快了讀取速度。

插入也有更小的索引要更新,所以它們也更快。

在以下情況下,基于時間的分區最有意義:

  • 大多數查詢只訪問最近數據的一個非常小的子集
  • 舊數據定期過期(刪除/丟棄)

請記住,在錯誤的情況下,讀取所有這些分區對開銷的傷害大于幫助。但是,在正確的情況下,它非常有幫助。例如,保留一年的時間序列數據并定期僅查詢最近一周。

擴展 Citus 上的時間序列數據

我們可以將單節點表分區技術與 Citus 的分布式分片相結合,形成一個可擴展的時間序列數據庫。這是兩全其美的。它在 Postgres 的聲明性表分區之上特別優雅。

例如,讓我們 distribute 和 partition 一個包含歷史 GitHub 事件數據的表。

  • GitHub 事件數據

https://examples.citusdata.com/events.csv

此 GitHub 數據集中的每條記錄代表在 GitHub 中創建的事件,以及有關事件的關鍵信息,例如事件類型、創建日期和創建事件的用戶。

第一步是按時間創建和分區(partition)表,就像我們在單節點 PostgreSQL 數據庫中一樣:

-- declaratively partitioned table
CREATE TABLE github_events (
event_id bigint,
event_type text,
event_public boolean,
repo_id bigint,
payload jsonb,
repo jsonb,
actor jsonb,
org jsonb,
created_at timestamp
) PARTITION BY RANGE (created_at);

注意 PARTITION BY RANGE (created_at)。這告訴 Postgres 該表將由 created_at 列在有序范圍內進行分區。不過,我們還沒有為特定范圍創建任何分區。

在創建特定分區之前,讓我們在 Citus 中分布表。我們將按 repo_id 進行分片,這意味著事件將被聚集到每個存儲庫的分片中。

SELECT create_distributed_table('github_events', 'repo_id');

此時 Citus 已跨工作節點為該表創建分片。在內部,每個分片是一個表,每個分片標識符 N 的名稱為 github_events_N。此外,Citus 傳播了分區信息,每個分片都聲明了 Partition key: RANGE (created_at)。

分區表不能直接包含數據,它更像是跨分區的視圖。因此,分片還沒有準備好保存數據。我們需要創建分區并指定它們的時間范圍,之后我們可以插入與范圍匹配的數據。

自動創建分區

Citus 為分區管理提供了輔助函數。我們可以使用 create_time_partitions() 創建一批每月分區:

SELECT create_time_partitions(
table_name := 'github_events',
partition_interval := '1 month',
end_at := now() + '12 months'
);

Citus 還包括一個視圖 time_partitions,以方便地調查它創建的分區。

隨著時間的推移,您將需要進行一些維護以創建新分區并刪除舊分區。最好設置一個定期 job 來運行帶有 pg_cron 之類的擴展的維護功能:

  • pg_cron

https://github.com/citusdata/pg_cron

-- set two monthly cron jobs:

-- 1. ensure we have partitions for the next 12 months

SELECT cron.schedule('create-partitions', '0 0 1 * *', $$
SELECT create_time_partitions(
table_name := 'github_events',
partition_interval := '1 month',
end_at := now() + '12 months'
)
$$);

-- 2. (optional) ensure we never have more than one year of data

SELECT cron.schedule('drop-partitions', '0 0 1 * *', $$
CALL drop_old_time_partitions(
'github_events',
now() - interval '12 months' /* older_than */
);
$$);

一旦設置了定期維護,您就不必再考慮分區了,它們可以正常工作。

請注意,Postgres 中的原生分區仍然很新,并且有一些怪癖。對分區表的維護操作將獲取可能會短暫停止查詢的激進鎖。目前在 postgres 社區中正在進行大量工作來解決這些問題,因此預計 Postgres 中的 time 分區只會變得更好。

使用列式存儲歸檔

一些應用程序的數據在邏輯上分為可更新的小部分和“凍結(frozen)”的較大部分。示例包括日志、點擊流或銷售記錄。在這種情況下,我們可以將分區與列式表存儲(在 Citus 10 中引入)結合起來壓縮磁盤上的歷史分區。Citus 柱狀表目前是僅追加的,這意味著它們不支持更新或刪除,但我們可以將它們用于不可變的歷史分區。

  • 列式表存儲

https://docs.citusdata.com/en/v10.2/admin_guide/table_management.html#columnar

分區表可以由行分區和列分區的任意組合組成。在 timestamp key 上使用范圍分區時,我們可以將最新的分區制作成行表,并定期將最新的分區滾動到另一個歷史列式分區中。

讓我們看一個例子,再次使用 GitHub 事件。我們將創建一個名為 github_columnar_events 的新表,以消除前面示例中的歧義。為了完全專注于列式存儲方面,我們不會分布此表。

接下來,下載示例數據:

wget http://examples.citusdata.com/github_archive/github_events-2015-01-01-{0..5}.csv.gz
gzip -c -d github_events-2015-01-01-*.gz >> github_events.csv
-- our new table, same structure as the example in
-- the previous section

CREATE TABLE github_columnar_events ( LIKE github_events )
PARTITION BY RANGE (created_at);

-- create partitions to hold two hours of data each

SELECT create_time_partitions(
table_name := 'github_columnar_events',
partition_interval := '2 hours',
start_from := '2015-01-01 00:00:00',
end_at := '2015-01-01 08:00:00'
);

-- fill with sample data
-- (note that this data requires the database to have UTF8 encoding)

\COPY github_columnar_events FROM 'github_events.csv' WITH (format CSV)

-- list the partitions, and confirm they're
-- using row-based storage (heap access method)

SELECT partition, access_method
FROM time_partitions
WHERE parent_table = 'github_columnar_events'::regclass;

-- convert older partitions to use columnar storage

CALL alter_old_partitions_set_access_method(
'github_columnar_events',
'2015-01-01 06:00:00' /* older_than */,
'columnar'
);

-- the old partitions are now columnar, while the
-- latest uses row storage and can be updated

SELECT partition, access_method
FROM time_partitions
WHERE parent_table = 'github_columnar_events'::regclass;

要查看柱狀表的壓縮率,請使用 VACUUM VERBOSE。我們三個柱狀分區的壓縮比相當不錯:

VACUUM VERBOSE github_columnar_events;
INFO:  statistics for "github_columnar_events_p2015_01_01_0000":
storage id: 10000000003
total file size: 4481024, total data size: 4444425
compression rate: 8.31x
total row count: 15129, stripe count: 1, average rows per stripe: 15129
chunk count: 18, containing data for dropped columns: 0, zstd compressed: 18

INFO: statistics for "github_columnar_events_p2015_01_01_0200":
storage id: 10000000004
total file size: 3579904, total data size: 3548221
compression rate: 8.26x
total row count: 12714, stripe count: 1, average rows per stripe: 12714
chunk count: 18, containing data for dropped columns: 0, zstd compressed: 18

INFO: statistics for "github_columnar_events_p2015_01_01_0400":
storage id: 10000000005
total file size: 2949120, total data size: 2917407
compression rate: 8.51x
total row count: 11756, stripe count: 1, average rows per stripe: 11756
chunk count: 18, containing data for dropped columns: 0, zstd compressed: 18

分區表 github_columnar_events 的一個強大之處在于它可以像普通表一樣被完整地查詢。

SELECT COUNT(DISTINCT repo_id)
FROM github_columnar_events;

只要分區鍵上有一個 WHERE 子句,它可以完全過濾到行表分區中,條目就可以被更新或刪除。

將行分區歸檔到列式存儲

當行分區已填滿其范圍時,您可以將其歸檔到壓縮的列式存儲中。我們可以使用 pg_cron 自動執行此操作,如下所示:

-- a monthly cron job

SELECT cron.schedule('compress-partitions', '0 0 1 * *', $$
CALL alter_old_partitions_set_access_method(
'github_columnar_events',
now() - interval '6 months' /* older_than */,
'columnar'
);
$$);

有關詳細信息,請參閱列式存儲。

責任編輯:武曉燕 來源: 黑客下午茶
相關推薦

2022-03-16 19:15:32

PostgreSQL日志Kafka

2022-03-21 06:45:22

PostgreSQL數據庫Citus

2022-03-14 19:40:40

PostgreSQL多租戶應用程序Citus

2022-03-22 11:35:10

數據建模PostgreSQLCitus

2022-03-15 19:19:04

分布式PostgreSQL集群

2022-03-29 23:17:52

PostgreSQL集群Citus

2022-03-30 19:18:31

PostgreSQL分布式I/O

2022-03-06 21:43:05

Citus架構PostgreSQL

2022-03-24 14:11:25

KubernetesCitusPostgreSQL

2022-03-31 19:20:39

集群PostgreSQLCitus

2022-03-27 06:37:37

SQLPostgreSQL集群

2022-03-28 13:13:58

分布列CitusPostgreSQ

2022-03-21 19:44:30

CitusPostgreSQ執行器

2022-04-01 19:26:15

PostgreSQLCitus分布式

2022-10-21 16:16:42

分布式系統優化

2022-02-25 17:38:15

Citus

2025-03-27 11:03:18

2020-04-14 11:14:02

PostgreSQL分布式數據庫

2020-06-02 14:45:48

PostgreSQL架構分布式

2017-09-11 15:17:01

分布式集群負載均衡
點贊
收藏

51CTO技術棧公眾號

亚洲精品久久久久久久久久久久久 | 宅男噜噜99国产精品观看免费| 国产黄网在线观看| 欧美大片aaaa| 精品久久久久久综合日本欧美| 男人用嘴添女人下身免费视频| 毛片网站在线| 狠狠色综合色综合网络| 91超碰caoporn97人人| 一区二区三区在线视频111| 国产xxxxxx| 欧美猛男男男激情videos| 欧美一a一片一级一片| 手机看片日韩国产| 伊人精品在线视频| 极品日韩av| 欲色天天网综合久久| 中文字幕在线观看视频www| 香蕉成人av| 亚洲精品国产无天堂网2021| 欧美主播一区二区三区美女 久久精品人 | 亚洲免费观看在线视频| 精品久久蜜桃| 精品久久国产视频| 日韩一区精品视频| 亚洲精品成人免费| 污污的视频免费观看| 国产福利在线观看| 国产白丝精品91爽爽久久| 国产精品入口尤物| 欧美一级片免费在线观看| 中文字幕视频精品一区二区三区| 国产精品久久久久一区二区三区 | 中文字幕在线不卡| 欧美精品一区二区视频| 高h放荡受浪受bl| 精品亚洲aⅴ乱码一区二区三区| 日产精品99久久久久久| 日韩成人一区二区三区| 韩国av一区| 成人97在线观看视频| 四虎影视一区二区| 国产精品嫩模av在线| 亚洲国产第一页| 国产成人精品综合久久久久99 | 欧洲美一区二区三区亚洲| 福利欧美精品在线| 精品久久久网站| 免费不卡av网站| 亚洲欧美专区| 欧美精品乱人伦久久久久久| 亚洲综合av一区| 黄色美女网站在线观看| a在线播放不卡| 国产精品亚洲综合| 亚洲精品免费在线观看视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲欧美日本视频在线观看| 久久久久久久色| 久久婷婷国产麻豆91| 欧美激情 亚洲a∨综合| 久久99热这里只有精品国产| 国产极品国产极品| 欧美日韩国产欧| 亚洲国产天堂网精品网站| av影片在线播放| 91午夜精品| 亚洲国产成人在线视频| 久久中文字幕人妻| 精品影片在线观看的网站| 亚洲免费电影一区| 91视频这里只有精品| 国产成人精品一区二区三区视频| 欧美亚洲一区二区在线观看| 亚洲欧美久久久久| 精品视频成人| 亚洲高清福利视频| 波多野结衣av在线免费观看| 国产一区二区精品福利地址| 最近2019中文免费高清视频观看www99 | 国产午夜一区二区| 中国特黄一级片| 中文在线播放一区二区| 亚洲黄页视频免费观看| 丝袜熟女一区二区三区| 在线看成人短视频| 日韩中文字幕免费视频| 青青草手机在线视频| 国产一区二区高清| 国产精品爽黄69天堂a| 国产日韩免费视频| 91浏览器在线视频| 亚洲午夜精品一区二区三区| 五月天激情在线| 精品福利一区二区| 91亚洲免费视频| 福利电影一区| 自拍偷拍亚洲精品| 国产一级片久久| 丝袜亚洲另类欧美| 51国产成人精品午夜福中文下载| 三级网站在线看| 国产精品私人影院| 国内精品视频一区二区三区| 成人不卡视频| 欧美精品一区二区三区蜜臀 | 一卡二卡三卡在线| 丁香婷婷综合五月| 国产欧美日韩视频| 国精产品一品二品国精品69xx| 久久久久久亚洲综合影院红桃 | 91人成网站www| 男操女在线观看| 一区二区三区精品视频| 精品久久久久久无码国产| av手机免费在线观看| 91国偷自产一区二区三区成为亚洲经典 | 亚洲aⅴ天堂av在线电影软件| 自由的xxxx在线视频| 色婷婷av一区| 成人在线视频免费播放| 久久久精品久久久久久96| 欧美资源在线观看| 日本网站在线播放| 国内精品自线一区二区三区视频| 免费国产在线精品一区二区三区| 国产高清一区二区三区视频| 欧美日韩在线电影| 女女互磨互喷水高潮les呻吟 | wwwxxx黄色片| 成人看片黄a免费看视频| 久久韩国免费视频| 探花国产精品一区二区| 日韩在线一区二区| 久久99国产精品99久久| 天堂在线视频观看| 亚洲精品视频免费观看| 亚洲精品手机在线观看| 欧美日韩高清| 日本高清不卡的在线| 四虎免费在线观看| 亚洲国产wwwccc36天堂| youjizz.com在线观看| 青青国产精品| 色爱av美腿丝袜综合粉嫩av| 国产美女www爽爽爽| 91麻豆国产福利在线观看| 97视频在线免费| 中文字幕日韩在线| 欧美日本中文字幕| 精品久久久无码中文字幕| 亚洲欧美日韩电影| 天堂视频免费看| 999久久久91| 国产欧美精品在线播放| 免费**毛片在线| 欧美日韩国产另类不卡| 国产精品视频一区二区在线观看| 久久国产成人午夜av影院| 超碰成人在线免费观看| 日韩国产一二三区| 久久精品久久久久| 精品国产av 无码一区二区三区| 中文字幕人妻色偷偷久久| 青青草97国产精品免费观看无弹窗版| 久久久久欧美| 先锋欧美三级| 日韩在线观看网站| 国产农村妇女毛片精品久久| 亚洲精品免费视频| 中文字幕在线国产| 日韩av不卡一区| 欧美性视频在线| 中文字幕在线视频第一页| 国产精品视频一二三区| 午夜激情av在线| 欧美日韩国产成人精品| 蜜桃传媒一区二区| 黄色成人在线观看网站| 伦理中文字幕亚洲| 欧美 日韩 人妻 高清 中文| 中文无字幕一区二区三区| 九九精品久久久| 亚洲午夜极品| 欧洲精品码一区二区三区免费看| 另类一区二区| 欧美激情精品久久久久| 久青草国产在线| 日韩一级免费观看| 在线能看的av| 亚洲视频免费在线| 手机免费看av片| 奇米色一区二区| 亚洲精品蜜桃久久久久久| 久久99国产精品视频| 成人乱人伦精品视频在线观看| av资源在线播放| 国产一区二区精品丝袜| 亚洲女同志亚洲女同女播放| 欧美日韩一区二区免费视频| 女同性αv亚洲女同志| 国产精品嫩草99av在线| 一区二区日本| 日韩av三区| 亚洲一区二区三区视频| 欧美××××黑人××性爽 | 综合图区亚洲| 亚洲天堂av电影| 精品国自产在线观看| 欧美性猛交xxxxxxxx| 中文字幕一区二区三区手机版| 国产女主播一区| 亚洲av成人片无码| 国产乱人伦精品一区二区在线观看| 欧美一级在线看| 一区二区电影| 亚洲综合首页| 狠狠操综合网| 久久久久久久久一区二区| 精品久久亚洲| 成人精品一区二区三区| aaaa欧美| 国产91精品最新在线播放| 福利在线导航136| 日韩美一区二区三区| 凹凸精品一区二区三区| 无码av免费一区二区三区试看 | 少妇荡乳情欲办公室456视频| 欧美日韩精品专区| 成人h动漫精品一区二区下载| 亚洲国产精品久久不卡毛片| 免费成年人视频在线观看| 国产精品你懂的在线| 日本二区在线观看| 久久综合狠狠综合久久综合88| 制服丝袜在线第一页| 国产伦精品一区二区三区在线观看| 国产又黄又猛又粗又爽的视频| 欧美亚洲网站| 黄在线观看网站| 亚洲精品一级| 大j8黑人w巨大888a片| 影音先锋久久资源网| 老司机激情视频| jizz性欧美2| 成人综合色站| 51亚洲精品| 国产免费一区二区三区| 九九热线视频只有这里最精品| 97久久精品国产| 98色花堂精品视频在线观看| 欧美激情网友自拍| 色屁屁www国产馆在线观看| 九九热精品视频在线播放| www视频在线免费观看 | www.综合| 国外成人免费在线播放| 欧美巨大丰满猛性社交| 亚洲性视频网站| 精品久久av| 在线播放国产一区中文字幕剧情欧美| 麻豆导航在线观看| 在线日韩欧美视频| 日本免费在线观看| 精品中文字幕在线2019| 成人在线免费观看黄色| 97色在线观看| 日韩高清中文字幕一区二区| 国产精品女视频| 国产精品一区二区精品| 国产成人成网站在线播放青青| 九九热播视频在线精品6| 欧美裸体网站| 99热在线成人| 成人免费a级片| 久久一本综合频道| 亚洲欧美aaa| 国产成人小视频| 狠狠人妻久久久久久综合蜜桃| 国产一区二三区| 东京热av一区| 久久精品欧美一区二区三区不卡| 91精品人妻一区二区三区四区| 成a人片国产精品| 人妻av无码一区二区三区| 亚洲欧洲成人精品av97| 久久网一区二区| 在线观看日韩高清av| 国产成人麻豆精品午夜在线 | 搞黄视频免费在线观看| www.xxxx精品| 免费v片在线观看| 国产女人精品视频| 狠狠久久伊人| 亚洲精品在线观看免费| 99精品视频免费全部在线| 91激情视频在线| 成人的网站免费观看| 国产精品18在线| 精品久久久久久久久久久久久| 这里只有精品6| 日韩精品免费在线播放| caopon在线免费视频| 日韩美女视频免费在线观看| 亚洲综合网站| 亚洲自拍三区| 美女日韩在线中文字幕| 免费看日本毛片| 久久99精品久久久久久国产越南 | 国产校园另类小说区| 九九九久久久久| 欧美日韩亚州综合| 欧美少妇另类| 久久久亚洲精品视频| 电影一区二区三区久久免费观看| 欧美精品一区二区三区在线看午夜 | 亚洲女成人图区| 黄页网站大全在线免费观看| 国产精品久久久久一区二区| 色橹橹欧美在线观看视频高清| 国产激情美女久久久久久吹潮| 教室别恋欧美无删减版| 奇米影视亚洲色图| 国产精品中文字幕日韩精品 | 琪琪亚洲精品午夜在线| 亚洲国产一区二区三区网站| 午夜精品短视频| 久久午夜电影| 狠狠人妻久久久久久综合蜜桃| 亚洲韩国精品一区| www日本在线| 久久久久999| 香蕉久久一区| 亚洲欧美日产图| 蜜臀精品一区二区三区在线观看 | 欧美在线免费观看| 丁香五月缴情综合网| 国产一区二区三区播放| 国产综合成人久久大片91| 毛片视频免费播放| 欧美午夜一区二区三区| 国产视频二区在线观看| 日本精品久久久久久久| 最新国产精品视频| 国产一区亚洲二区三区| 91麻豆成人久久精品二区三区| 国产精品老女人| 日韩理论片久久| 在线免费看h| 日韩尤物视频| 日本视频一区二区| 欧美福利在线视频| 欧美日韩国产成人在线91| 91涩漫在线观看| 成人福利视频网| 最新欧美人z0oozo0| 香蕉视频色在线观看| 一区二区三区四区在线| 高清毛片aaaaaaaaa片| 2025国产精品视频| 国产探花一区二区| 男生操女生视频在线观看| 日韩毛片精品高清免费| www.色婷婷.com| 午夜精品一区二区三区视频免费看| 精品欠久久久中文字幕加勒比| 1024精品视频| 国产精品色哟哟| 国产剧情精品在线| 久久久久亚洲精品| 色先锋久久影院av| 国产无套粉嫩白浆内谢的出处| 国产精品久久久久久久裸模| 国产特黄一级片| 97久久超碰福利国产精品…| 精品久久影视| 91视频福利网| 欧美日韩人人澡狠狠躁视频| 成人网视频在线观看| 69堂成人精品视频免费| 99热在线精品观看| 成人无码av片在线观看| 538在线一区二区精品国产| 国产三级伦理在线| 欧美极品色图| 国产一区二区三区高清播放| 午夜精品三级久久久有码| 中国china体内裑精亚洲片| 日韩视频一区二区三区四区| 91九色在线观看视频| 中文字幕一区二区三区精华液| 成人无码一区二区三区| 国产91在线播放精品91| 欧美日本精品| 免费网站在线高清观看| 精品日韩一区二区三区| 素人一区二区三区| 青青草视频在线免费播放| 中文字幕一区二区三区色视频| 天堂中文在线观看视频|