日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

基于物化视图优化_「PostgreSQL技巧」PostgreSQL中的物化视图与汇总表比较

發布時間:2025/3/21 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于物化视图优化_「PostgreSQL技巧」PostgreSQL中的物化视图与汇总表比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

多年來,物化視圖一直是Postgres期待已久的功能。他們最終到達了Postgres 9.3,盡管當時很有限。在Postgres 9.3中,當刷新實例化視圖時,它將在刷新時在表上保持鎖定。如果您的工作量是非常繁忙的工作時間,則可以工作,但是如果您要為最終用戶提供動力,那么這將是一個大問題。在Postgres 9.4中,我們看到了Postgres實現了同時刷新實例化視圖的功能。現在,我們已經完全烘焙了物化視圖的支持,但即使如此,我們仍然看到它們可能并不總是正確的方法。

什么是視圖view?

對于那些不是數據庫專家的人,我們將做一點備份。要了解什么是實體化視圖,我們首先來看一個標準視圖。視圖是已定義的查詢,您可以像表一樣對其進行查詢。當您具有通常用于某些標準報表/構建塊的復雜數據模型時,視圖特別有用。稍后我們將介紹一個實例化視圖。

視圖非常適合簡化復雜SQL的復制/粘貼。缺點是每次執行視圖時都會重新計算結果。對于大型數據集,這可能會導致掃描大量數據,使緩存無效,并且通常速度較慢。輸入實例化視圖

物化你的視圖

讓我們從一個可能包含大量原始數據的示例架構開始。在這種情況下,一個非常基本的網絡分析工具會記錄綜合瀏覽量,發生時間和用戶的會話ID。

CREATE TABLE pageviews ( id bigserial, page text, occurred_at timestamptz, session_id bigint );

基于這些原始數據,有很多不同的視圖可能非常普遍。而且,如果我們有一個實時儀表板,我們將為它提供動力,因為它可能花費很長時間來查詢原始數據,因此很快變得不可行。相反,我們可以對物化視圖進行一些匯總:

CREATE MATERIALIZED VIEW rollups AS SELECT date_trunc('day') as day, page, count(*) as views FROM pageviews GROUP BY date_trunc('day'), page;

對于每天至少瀏覽一次的頁面,這將為我們每天提供1條記錄。

對于每天晚上批處理的事情,可以處理前一天的事情。但是對于面對客戶的事情,您可能不希望等到一天結束后再提供有關網頁瀏覽量如何進行分析的信息。當然,您可以定期刷新一次:

refresh materialized view rollups;

這種刷新方式的缺點是每次刷新時都會重新計算當天的總數,這實際上是在進行不必要的處理。

為了可擴展性增量匯總

另一種方法是使用upsert,它使我們能夠增量匯總數據而不必重新處理所有基礎數??據。 Upsert本質上是創建或更新。為此,我們將創建一個表而不是物化視圖,然后在其上施加唯一約束:

CREATE TABLE ( day as timestamptz, page text, count as bigint, constraint unq_page_per_day unique (day, page) );

現在開始匯總,我們將執行以下操作:

INSERT INTO rollups SELECT date_trunc('day') as day, page, count(*) as views FROM pageviews GROUP BY date_trunc('day'), page;

這基本上與我們的物化視圖相同。但是由于我們的獨特限制,當遇到已經插入的記錄時,插入會出錯。為了完成這項工作,我們將調整查詢以完成兩件事。一項我們將只處理新記錄,另一項我們將使用upsert語法。

為了處理新記錄,我們將保留上次停止記錄的記錄,僅處理新記錄。我們在本文中概述了一組方便使用的函數/表。使用適當的函數和表格來跟蹤我們上次中斷的位置,現在我們將查詢更新為僅匯總自上次處理后的數據。然后,我們將其與upsert結合在一起。 upsert將嘗試插入當天/頁面的任何新記錄,如果已經看到這些值,則將增加它們:

INSERT INTO rollups SELECT day, page, count(*) as views FROM pageviews WHERE event_id > e GROUP BY day, page ON CONFLICT (day, page) DO UPDATE SET views = views + EXCLUDED.views;

物化視圖與匯總表哪個正確?

物化視圖是一種非常簡單直接的方法。它們的易用性使它們成為快速簡便的事情的理想選擇。但是,對于具有較大活動負載的較大數據集和數據庫,僅處理上一次匯總的凈新數據可以更有效地利用資源。哪種方法最合適取決于時間和系統資源。盡管如您所見,匯總方法僅需要一點點努力,并且可以進一步擴展。

原文:https://www.citusdata.com/blog/2018/10/31/materialized-views-vs-rollup-tables/

本文:http://jiagoushi.pro/node/928

討論:請加入知識星球或者微信圈子【首席架構師圈】

總結

以上是生活随笔為你收集整理的基于物化视图优化_「PostgreSQL技巧」PostgreSQL中的物化视图与汇总表比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女黄色真播 | 又黄又爽的免费视频 | 岛国av一区二区三区 | www日| brazzers欧美一区二区 | 日韩经典一区 | 男女啪啪免费网站 | 99视频久久| 欧美黄色a级片 | 日韩欧美精品一区二区 | 一卡二卡三卡 | 人妖天堂狠狠ts人妖天堂狠狠 | 国产一区中文字幕 | 好屌妞视频这里只有精品 | 67194午夜| 毛片9| 99国产在线| 精品天堂 | www.三级.com| 日本中文在线 | 开心激情久久 | 中文字幕一区二区精品 | 国产综合久久久 | 丝袜五月天 | 国产乱淫av | 国产精品12p | 好逼天天操 | 亚洲成人一区在线 | 女人高潮特级毛片 | 美女少妇一区二区 | 亚洲欧美日韩久久精品 | 一区二区三区激情 | 91亚色| 免费黄色小视频 | 天天干影院 | 成人福利在线免费观看 | 这里只有精品999 | 白丝动漫美女 | caoporn视频在线 | 免费av资源 | 国产av一区二区三区 | a级片在线免费看 | 久久波多野结衣 | 欧美v亚洲 | 尤物videos另类xxxx | 97色伦97色伦国产欧美空 | 91中文字幕在线观看 | 亚洲毛片a | 三级免费毛片 | 华人av在线| 久久不卡视频 | 国产精品区二区三区日本 | 亚洲国产专区 | 天天草视频 | 日本免费网站在线观看 | 天堂av免费在线观看 | 精品少妇白浆小泬60P | 亚洲动漫精品 | 农村少妇久久久久久久 | 国产成人a亚洲精品 | 久久高清国产 | 俄罗斯精品一区二区三区 | 中文字幕av影院 | a一级网站 | 欧美在线观看视频一区二区 | 欧美伦理片网站 | 国产精品白丝喷水在线观看 | 中文字幕av一区二区三区 | 熟女少妇一区二区 | 在线观看你懂的网站 | 国产精品爱啪在线线免费观看 | 国产又黄又粗又长 | 美女中文字幕 | 亚洲美女精品视频 | 一区二区日韩在线观看 | 欧美一区二区激情 | 亚洲情网 | 一级片一区 | 调教小屁屁白丝丨vk | 亚洲成人网在线观看 | 中文一区二区在线播放 | 久久神马| 欧美九九| 波多野结衣av中文字幕 | 久91| 另类在线视频 | 制服丝袜一区在线 | 久草在在线 | 亚洲婷婷小说 | aaa国产 | 91 色| 一道本无吗一区 | 亚洲精品久久久久久动漫器材一区 | 国产91白丝在一线播放 | 福利精品| 久久激情影院 | 美女av一区二区 | 欧美干 | 男人午夜影院 |