日韩性视频-久久久蜜桃-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中的物化视图与汇总表比较的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 91免费看黄 | 免费在线精品视频 | 夜夜添无码一区二区三区 | 亚洲欧洲综合 | 91禁在线观看 | 亚洲人体一区 | 亚洲一区二区小说 | 亚洲国产欧美在线人成 | 国产精品久久网 | 51国产在线 | 久久艹这里只有精品 | 青青草视频在线免费观看 | 成人www视频 | 国产视频123区 | 山村大伦淫第1部分阅读小说 | 国产精彩视频一区二区 | 全部免费毛片在线播放一个 | 亚洲综合在线一区二区 | 国产二级一片内射视频播放 | 国产精品久久久久久久久久辛辛 | 成人午夜电影网站 | 日韩视频一区在线 | 91视频色版 | 国产91对白在线播放 | 91视频在线观看视频 | 成人拍拍拍 | 日本a√在线观看 | 亚洲社区一区二区 | 男女作爱网站 | 99有精品 | 欧洲在线观看 | 少妇脱了内裤让我添 | 91精品久久香蕉国产线看观看 | 久草成人 | 91丨porny丨| 狠狠操狠狠插 | 影音先锋色小姐 | 狠狠的日| 国产日韩欧美精品一区 | 天堂av2018| 亚洲一本在线 | 黄片毛片视频 | 国产乱人伦精品一区二区 | www精品| www.日韩在线 | 91亚洲影院| 国产欧美一区二区三区视频在线观看 | 亚洲精品乱码久久久久久写真 | 国产丝袜在线 | 嫩草在线观看 | 美美女高清毛片视频免费观看 | 国产中文 | 中文字幕国产专区 | 亚洲高清视频免费观看 | 贝利弗山的秘密在线观看 | 美女调教视频 | 国产欧美一区二区三区国产幕精品 | 亚洲av区无码字幕中文色 | 亚洲精品天堂在线观看 | 成人网页 | 免费视频亚洲 | 国产无玛 | 超碰一区二区 | 成人做受黄大片 | 国产精品黑人一区二区三区 | 日本老妇性生活 | 久久精品国产免费看久久精品 | 欧美国产视频 | 美女伦理水蜜桃4 | 摸大乳喷奶水www视频 | 黄色一级片a | 可以看的av网址 | 久草热在线 | 午夜理伦三级理论 | 国产第一福利影院 | 国产精品2019 | 国产黄色一级网站 | 日韩欧美高清视频 | 中文字幕第一页亚洲 | 国产chinese男男gaygay视频 | 成人一区二区三区视频 | 狠狠五月| 九色蝌蚪9l视频蝌蚪9l视频 | 日本激情久久 | 国产精品99re | 亚洲av最新在线网址 | 国产精品77 | 波多野结衣一区二区三区四区 | aaaaav| 亚洲国产99| 五月天婷婷基地 | 亚洲高清视频在线观看 | 五月天婷婷爱 | 日日狠狠久久偷偷四色综合免费 | 我的好妈妈在线观看 | 国产成人免费观看视频 | 国产精品人成在线观看免费 | 久久久久免费视频 | 无套白嫩进入乌克兰美女 |