精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲区一区二区三| 亚洲一二三区av| 少妇高潮一区二区三区99小说| 黄色成人av网站| 日韩电影中文 亚洲精品乱码| 久久久久免费精品| 69xxx在线| 99久久99久久精品免费观看| 国产精品视频久| 精品少妇久久久久久888优播| 日韩最新在线| 日韩一区二区在线观看视频| 国产精品免费成人| 在线观看小视频| 国产欧美一区二区三区鸳鸯浴| 91影视免费在线观看| 九九热在线免费观看| 亚洲第一天堂| 一区二区三区四区在线观看视频| 26uuu国产| 素人啪啪色综合| 偷窥国产亚洲免费视频| 最新不卡av| 九色在线播放| 成人av电影在线| 91中文字幕一区| 久久国产乱子伦精品| 欧美国内亚洲| 日韩视频永久免费观看| 粉嫩av蜜桃av蜜臀av| 秋霞午夜一区二区三区视频| 日本高清免费不卡视频| 国产精品一线二线三线| 久久国产精品一区| 亚洲国产精品t66y| 久久视频在线观看中文字幕| 精品人妻少妇嫩草av无码专区 | 国产亚洲精品aa| 不卡视频一区| 国产偷人妻精品一区二区在线| 天堂va蜜桃一区二区三区漫画版| 高清一区二区三区日本久| 国产67194| 91亚洲国产成人久久精品| 亚洲丝袜在线视频| 麻豆国产精品一区| 日韩av不卡一区| 精品国产区一区| 欧洲成人午夜精品无码区久久| 亚洲资源在线| 51精品秘密在线观看| 三级视频中文字幕| 成人国产精品一区二区免费麻豆 | 国产乱码精品一区二区三区精东| 人人超碰91尤物精品国产| 国产精品成人v| 国产一区免费看| 日韩和欧美的一区| 国产精品美女主播在线观看纯欲| 免费黄色片视频| 奇米888四色在线精品| 国产精品视频xxx| 夜夜躁很很躁日日躁麻豆| 蜜桃av噜噜一区| 成人妇女免费播放久久久| 国产精品乱码久久久| 国产在线视视频有精品| 7777精品伊久久久大香线蕉语言 | 亚洲男人天堂2024| 亚洲性猛交xxxx乱大交| 清纯唯美亚洲综合一区| 日韩在线视频免费观看| 国产日韩欧美在线观看视频| 欧美久色视频| 日本久久久久亚洲中字幕| 草莓视频18免费观看| 麻豆一区二区在线| 91亚洲午夜在线| 五月天婷婷视频| 国产丝袜美腿一区二区三区| 一区二区日本伦理| 国内在线视频| 91国产免费观看| 深夜做爰性大片蜜桃| 红杏aⅴ成人免费视频| 亚洲精品在线不卡| 四虎地址8848| 亚洲国内自拍| 国产免费一区二区三区在线能观看| 97久久人国产精品婷婷| 不卡高清视频专区| 亚洲一区二区在| 国产乱码在线| 欧美网站一区二区| 国产国语老龄妇女a片| 视频精品在线观看| 九九久久精品一区| 色屁屁影院www国产高清麻豆| 毛片av中文字幕一区二区| 国产日韩欧美二区| 自拍视频在线| 污片在线观看一区二区| 中文字幕第一页在线视频| 美女扒开腿让男人桶爽久久动漫| 中文字幕亚洲激情| av大片在线免费观看| 国产在线播精品第三| 麻豆av一区二区三区| а√资源新版在线天堂| 色av成人天堂桃色av| 26uuu国产| 91综合视频| 欧亚精品在线观看| 粉嫩小泬无遮挡久久久久久| 欧美激情综合在线| 99999精品视频| 中文字幕视频精品一区二区三区| 一区二区三区亚洲| 日本一区二区三区精品| 国产成a人无v码亚洲福利| 色之综合天天综合色天天棕色| 欧美高清另类hdvideosexjaⅴ| 欧美色大人视频| 久久偷拍免费视频| 在线不卡亚洲| 97人人模人人爽人人少妇| 尤物网在线观看| 欧洲一区二区av| 成人h动漫精品一区| 国产精品国码视频| 91九色视频在线观看| 天堂中文а√在线| 欧美性生活影院| 久久久久亚洲av无码专区桃色| 亚洲一级二级| 国产精品三区www17con| 污的网站在线观看| 日韩一级精品视频在线观看| 男女做暖暖视频| 精品亚洲国产成人av制服丝袜| 亚洲电影网站| 成人国产激情| 精品国产拍在线观看| 精品国产青草久久久久96| 国产婷婷色一区二区三区在线| jizzjizzxxxx| 网红女主播少妇精品视频| 海角国产乱辈乱精品视频| www.桃色av嫩草.com| 亚洲精品中文字幕在线观看| 91欧美一区二区三区| 91成人观看| 97视频资源在线观看| 制服丝袜中文字幕在线| 欧美一级一级性生活免费录像| 日本福利片在线观看| 国产精品亚洲成人| 国产日韩av网站| 欧美午夜18电影| 国产不卡av在线| av影片免费在线观看| 欧美亚洲国产一卡| 黑人狂躁日本娇小| 国产精品羞羞答答xxdd| 免费看毛片的网址| 黄色一级大片在线免费看国产| 欧美性爽视频| 日韩久久精品一区| 国产精品成人国产乱| 99久久国产免费看| www.欧美日本| 外国成人免费视频| 风间由美一区二区三区| 国产精品一二三产区| 亚洲色图激情小说| 国产口爆吞精一区二区| 亚洲国产视频直播| 亚洲熟妇一区二区三区| 精品综合免费视频观看| 国产1区2区3区中文字幕| 国产图片一区| 国产精品99久久久久久白浆小说 | 九九热在线精品视频| 日本精品久久久久| 欧美性受xxxx黑人xyx| 看片网站在线观看| 久久香蕉国产线看观看99| www午夜视频| 国内成人在线| 天堂资源在线亚洲资源| 亚洲成人五区| 国产精品成人品| 日皮视频在线观看| 一本色道久久综合狠狠躁篇的优点 | 欧美一区二区三区免费看| 国产一区二区高清不卡| 素人啪啪色综合| 欧美黄色www| eeuss影院www在线观看| 亚洲第一区中文字幕| 亚洲特级黄色片| 欧美性极品xxxx娇小| 玖玖爱这里只有精品| 国产欧美一区二区精品久导航 | 久久噜噜亚洲综合| 被黑人猛躁10次高潮视频| 久久精品电影| 欧美这里只有精品| 日韩成人a**站| 精品欧美一区二区在线观看视频| 91精品福利观看| 国产精品69精品一区二区三区| 青青草原av在线| 日韩综合视频在线观看| 奇米影视888狠狠狠777不卡| 日韩视频免费观看高清完整版| 瑟瑟视频在线免费观看| 精品日韩中文字幕| 麻豆一区二区三区精品视频| 亚洲欧美在线另类| 久久久久久成人网| 2021久久国产精品不只是精品| 一区二区在线免费观看视频| 毛片av中文字幕一区二区| 亚洲人成无码www久久久| 一本色道久久综合亚洲精品高清 | 日韩精品中文字幕在线观看| 国产黄色一区二区| 91.com视频| 影音先锋国产在线| 在线免费亚洲电影| 九九精品免费视频| 欧美日韩国产一区二区| 久久精品国产亚洲av高清色欲| 亚洲日本中文字幕区| 日本午夜精品视频| 欧美国产激情二区三区| 无码 人妻 在线 视频| 久久久国产精品午夜一区ai换脸| www.日本高清| 91偷拍与自偷拍精品| 国产xxxx视频| 99精品视频中文字幕| 国产伦精品一区二区三区精品| 国产乱淫av一区二区三区| 欧美成人手机在线视频| 国内精品国产三级国产a久久| 亚洲综合婷婷久久| 激情图区综合网| 中文字幕第10页| 大白屁股一区二区视频| 亚洲视频 中文字幕| bt7086福利一区国产| 制服丝袜第一页在线观看| 99免费精品在线观看| 97人妻天天摸天天爽天天| 91玉足脚交白嫩脚丫在线播放| 亚洲男人在线天堂| 久久久精品2019中文字幕之3| 亚洲国产av一区| 国产精品久久久久影院亚瑟 | 国产chinese中国hdxxxx| 成人黄色av电影| 成人免费网站黄| 国产精品无遮挡| 来吧亚洲综合网| 亚洲一区二区高清| 国产精品999在线观看| 色8久久人人97超碰香蕉987| 在线免费a视频| 精品国产人成亚洲区| 欧美女优在线| 久久亚洲国产精品成人av秋霞| 任你弄在线视频免费观看| 91精品国产91久久久久| 成人免费视频观看| 91观看网站| 亚洲aa在线| 日韩最新中文字幕| 亚洲另类黄色| 天天操,天天操| 成人午夜电影久久影院| 日韩av在线看免费观看| 国产精品不卡在线| 亚洲国产精品午夜在线观看| 欧美在线你懂得| 亚洲第一视频在线| 亚洲天堂免费视频| 在线观看av免费| 国产大片精品免费永久看nba| 国产高清精品二区| 久久综合久久久| 欧美+日本+国产+在线a∨观看| 日本a级片免费观看| 精品一区二区三区免费观看| 少妇一级淫片免费放播放| 亚洲国产经典视频| 日本三级小视频| 欧美二区在线观看| 深夜福利视频一区| 欧美精品少妇videofree| 国产精品av一区二区三区| 亚洲一区久久久| 奇米色欧美一区二区三区| 丁香婷婷综合激情| 久久国产精品第一页| 欧美深性狂猛ⅹxxx深喉| 亚洲人被黑人高潮完整版| 日本中文字幕久久| 精品国产乱码91久久久久久网站| 欧美成人xxx| 国产mv免费观看入口亚洲| 超碰97久久国产精品牛牛| 亚洲一区bb| 首页综合国产亚洲丝袜| 91传媒理伦片在线观看| 亚洲三级在线免费观看| 久久精品五月天| 日韩激情视频在线播放| 午夜伦理大片视频在线观看| 国产区亚洲区欧美区| 红桃视频在线观看一区二区| 成人性生活视频免费看| 国产精品一区二区久久精品爱涩| 青青草自拍偷拍| 欧洲精品视频在线观看| 无码精品一区二区三区在线| 欧美精品videosex性欧美| 激情五月综合婷婷| 致1999电视剧免费观看策驰影院| 久久激情婷婷| mm131美女视频| 欧美色播在线播放| 无码国产伦一区二区三区视频| 欧美理论电影在线播放| 玖玖精品一区| 日日噜噜夜夜狠狠久久丁香五月| 琪琪一区二区三区| 欧美 日韩 国产 成人 在线观看| 精品免费在线观看| 五月婷婷深深爱| 97超碰蝌蚪网人人做人人爽 | 日韩成人av在线| 国产无遮挡裸体视频在线观看| 国产欧美在线一区二区| 在线不卡欧美| 人人妻人人澡人人爽人人精品| 午夜精品久久久久影视| 色欲av伊人久久大香线蕉影院| 97精品久久久中文字幕免费| 欧美aaaaa级| 久久久久久久激情| 国产日韩欧美精品电影三级在线| aaaaaa毛片| 国产亚洲视频中文字幕视频| 91综合国产| 在线观看成人av| 国产精品一二三四| 男女视频免费看| 亚洲欧美制服综合另类| 视频一区在线免费看| 宅男噜噜99国产精品观看免费| 久久se精品一区精品二区| www.5588.com毛片| 日韩美女一区二区三区| free性m.freesex欧美| 欧美极品一区二区| 免费xxxx性欧美18vr| 日韩在线一卡二卡| 精品国产亚洲在线| 成人免费网站视频| 亚洲一区三区电影在线观看| 国产精品一二一区| 特级毛片www| 久久色精品视频| 88久久精品| 日韩黄色片视频| 中文字幕一区二区三区不卡在线| 精品人妻少妇嫩草av无码专区| 2020久久国产精品| 97精品一区二区| 中文字幕天堂网| 欧美性xxxxx极品少妇| 污污网站在线看| 欧美日韩在线精品一区二区三区| 蜜桃视频在线观看一区二区| 精品99久久久久成人网站免费| 亚洲欧美日韩精品久久亚洲区| 色成人综合网| 爱福利视频一区二区| 综合电影一区二区三区| 午夜性色福利影院| 91美女高潮出水| 亚洲综合国产| 欧美老熟妇一区二区三区| 亚洲午夜精品久久久久久性色 | 日韩欧美国产系列| 美女福利一区二区三区| 91免费版看片| 国产欧美视频在线观看|