亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

深入了解MySQL ClickHouse中的物化視圖功能

瀏覽:85日期:2023-05-08 10:17:33
目錄
  • 數(shù)據(jù)表與視圖
  • ClickHouse的物化視圖
  • 物化視圖的更新
  • 使用示例

數(shù)據(jù)表與視圖

  • 數(shù)據(jù)庫(kù)表是一種關(guān)系型數(shù)據(jù)庫(kù)中的基本對(duì)象,用于存儲(chǔ)數(shù)據(jù)。每個(gè)表包含多個(gè)列和行,其中每個(gè)列代表一種數(shù)據(jù)類型,每一行則表示一條記錄
  • 視圖是一種虛擬的表格,它并不實(shí)際存在于數(shù)據(jù)庫(kù)中,而是通過(guò)一個(gè)SQL查詢語(yǔ)句定義。視圖在數(shù)據(jù)庫(kù)管理中具有重要作用,在實(shí)踐中也是非常常見的。
  • 視圖可以從一個(gè)或多個(gè)表中選擇部分列或行作為數(shù)據(jù)顯示,并提供了訪問(wèn)數(shù)據(jù)的一種靈活方式
  • 與表格不同的是,視圖不能存儲(chǔ)數(shù)據(jù),但對(duì)于一些常用的查詢操作,卻能大大簡(jiǎn)化SQL操作
  • 通過(guò)創(chuàng)建視圖,可以大大簡(jiǎn)化復(fù)雜的查詢,同時(shí)也可以保持?jǐn)?shù)據(jù)獨(dú)立性,提高數(shù)據(jù)的安全性
  • 視圖可以為數(shù)據(jù)提供安全保護(hù),限制用戶對(duì)特定數(shù)據(jù)的訪問(wèn)權(quán)限。例如,你的系統(tǒng)要和另一個(gè)系統(tǒng)對(duì)接,對(duì)方要求訪問(wèn)某些數(shù)據(jù),又不想搞接口對(duì)接;此時(shí)就可以根據(jù)對(duì)方的需要,建幾個(gè)視圖,再給對(duì)方開個(gè)只讀這幾個(gè)視圖的低權(quán)限用戶;這樣既滿足對(duì)方查詢需求,又不會(huì)被對(duì)方讀取或修改到其他數(shù)據(jù)。

ClickHouse的物化視圖

  • 像上面說(shuō)的,視圖并不存儲(chǔ)任何數(shù)據(jù),而是通過(guò)查詢操作動(dòng)態(tài)生成數(shù)據(jù)。它可以幫助用戶在數(shù)據(jù)表上創(chuàng)建一層抽象,獲得一些更加方便和易于維護(hù)的業(yè)務(wù)邏輯
  • ClickHouse是一個(gè)快速的列式數(shù)據(jù)庫(kù)管理系統(tǒng),ClickHouse的視圖也是一種虛擬的表,其內(nèi)容由一個(gè)查詢定義
  • ClickHouse的普通視圖(view),和其他數(shù)據(jù)庫(kù)一樣,沒(méi)有緩存數(shù)據(jù),每次查詢都需要重新生成數(shù)據(jù)
  • 但是ClickHouse還支持一種物化視圖(Materialized View),字面意義理解,就是實(shí)際去物理存儲(chǔ)視圖
  • 物化視圖是一種特殊的視圖,它會(huì)在創(chuàng)建的時(shí)候自動(dòng)執(zhí)行查詢,并將結(jié)果保存到一張實(shí)際的表格中。在查詢物化視圖時(shí),可以直接使用保存的結(jié)果進(jìn)行查詢,而無(wú)需重新執(zhí)行查詢語(yǔ)句,從而顯著提高查詢效率
  • 簡(jiǎn)單來(lái)說(shuō),就是“空間換時(shí)間”,提前查詢好存儲(chǔ)起來(lái),占用了一定的空間,當(dāng)查詢時(shí)直接拿來(lái)使用,因此在使用時(shí)需要權(quán)衡查詢效率與存儲(chǔ)空間的使用。

物化視圖的更新

ClickHouse的物化視圖(Materialized View)是一種特殊的表,它能夠在底層數(shù)據(jù)更新后,自動(dòng)更新自己的數(shù)據(jù)。數(shù)據(jù)更新包括兩個(gè)方面的變化:基礎(chǔ)表的數(shù)據(jù)修改和基礎(chǔ)表的數(shù)據(jù)新增。

基礎(chǔ)表的數(shù)據(jù)修改

如果基礎(chǔ)表的數(shù)據(jù)修改,物化視圖會(huì)自動(dòng)更新。這是通過(guò)ClickHouse的引擎和存儲(chǔ)方式來(lái)實(shí)現(xiàn)的。當(dāng)基礎(chǔ)表的一行記錄被修改,ClickHouse會(huì)將這個(gè)修改轉(zhuǎn)化為一個(gè)新的INSERT語(yǔ)句,并且將其發(fā)送到物化視圖中。這樣,物化視圖就能夠自動(dòng)更新自己的數(shù)據(jù)。

基礎(chǔ)表的數(shù)據(jù)新增

如果基礎(chǔ)表的數(shù)據(jù)新增,物化視圖同樣會(huì)自動(dòng)更新。這是通過(guò)設(shè)置物化視圖的刷新機(jī)制來(lái)實(shí)現(xiàn)的。刷新機(jī)制有兩種類型:定時(shí)刷新和自動(dòng)刷新。

(1)定時(shí)刷新

定時(shí)刷新需要使用MATERIALIZED VIEWREFRESH INTERVAL語(yǔ)法來(lái)指定刷新時(shí)間間隔。例如,以下語(yǔ)句表示每5分鐘自動(dòng)刷新物化視圖:

CREATE MATERIALIZED VIEW my_mv
engine = MergeTree
AS SELECT * FROM my_table
SETTINGS refresh_interval = 300

(2)自動(dòng)刷新

自動(dòng)刷新可以通過(guò)在基礎(chǔ)表上創(chuàng)建觸發(fā)器實(shí)現(xiàn)。當(dāng)基礎(chǔ)表有數(shù)據(jù)插入時(shí),觸發(fā)器會(huì)自動(dòng)插入相應(yīng)的數(shù)據(jù)到物化視圖中。例如,以下語(yǔ)句創(chuàng)建了一個(gè)觸發(fā)器,當(dāng)my_table中插入一條新數(shù)據(jù)時(shí),相應(yīng)的數(shù)據(jù)將插入到my_mv中:

CREATE TRIGGER insert_trigger ON my_table FOR INSERT
AS INSERT INTO my_mv SELECT * FROM my_table WHERE id = NEW.id

另外,我們也可以手動(dòng)刷新物化視圖,甚至可以使用一些定時(shí)手段,實(shí)時(shí)或定時(shí)去觸發(fā)它。當(dāng)然,我們要考慮資源占用和性能損耗。

REFRESH MATERIALIZED VIEW xxx;

需要注意的是,ClickHouse的物化視圖雖然能夠自動(dòng)更新數(shù)據(jù),但是會(huì)帶來(lái)一些性能上的損失,尤其是在基礎(chǔ)表數(shù)據(jù)量較大的情況下。因此,在設(shè)計(jì)物化視圖時(shí),需要考慮這個(gè)因素,同時(shí)選擇合適的刷新機(jī)制來(lái)平衡性能和數(shù)據(jù)實(shí)時(shí)性的需求。

當(dāng)然,我們既然選擇使用ClickHouse,肯定是數(shù)據(jù)新增比較多,而極少去修改刪除。對(duì)于一般對(duì)實(shí)時(shí)要求不高的業(yè)務(wù)場(chǎng)景,定時(shí)刷新完全足夠我們使用了。

使用示例

ClickHouse中,創(chuàng)建視圖的語(yǔ)法為:

CREATE VIEW [IF NOT EXISTS] name [ON CLUSTER cluster]
( SELECT ... )

其中,name為視圖的名稱,SELECT語(yǔ)句為需要執(zhí)行的查詢語(yǔ)句。創(chuàng)建視圖之后,可以使用SELECT語(yǔ)句查詢視圖的內(nèi)容。

  • ClickHouse中,創(chuàng)建物化視圖的語(yǔ)法為:
CREATE MATERIALIZED VIEW [IF NOT EXISTS] name [ON CLUSTER cluster] TO [db.]table [ENGINE = engine] [POPULATE] AS SELECT ...

其中,name為物化視圖的名稱,[db.]table為保存結(jié)果的表格名稱,SELECT語(yǔ)句為需要執(zhí)行的查詢語(yǔ)句。在創(chuàng)建物化視圖時(shí),可以選擇是否執(zhí)行第一次查詢,并將結(jié)果保存到表格中。后續(xù)查詢時(shí),可以直接使用表格中保存的結(jié)果進(jìn)行查詢,從而提高查詢效率。

  • 像一些其他參數(shù),例如PARTITION BYORDER BY等也可以在創(chuàng)建物化視圖時(shí)使用,和創(chuàng)建表的使用方法一樣,也可以創(chuàng)建完物化視圖后再去更新設(shè)置
  • 下面給出一個(gè)普通物化視圖的完整示例。假設(shè)我們有一個(gè)表名為example,并且我們想創(chuàng)建一個(gè)名為example_mv的物化視圖,refresh_interval設(shè)置為5分鐘,以便定時(shí)更新數(shù)據(jù)。以下是創(chuàng)建該視圖的示例SQL語(yǔ)句:
CREATE MATERIALIZED VIEW example_mv 
ENGINE = MergeTree()
AS 
SELECT
    Column1,
    Column2,
    ...
FROM example
-- 設(shè)置刷新間隔為5分鐘
SETTINGS refresh_interval = 300

到此這篇關(guān)于深入了解MySQL ClickHouse中的物化視圖功能的文章就介紹到這了,更多相關(guān)MySQL ClickHouse物化視圖內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: MySQL
主站蜘蛛池模板: 亚洲午夜精品一区二区蜜桃 | 免费国产在线观看 | 精品毛片视频 | 看片亚洲| 亚洲精品资源在线 | 麻豆视频污 | 午夜亚洲视频 | 亚洲狠狠综合久久 | 天海翼一区二区三区高清视频 | 国模私拍高清大胆专业网站 | 国产成人yy精品1024在线 | 色天天天天综合男人的天堂 | 久久综合图区亚洲综合图区 | 国产日韩欧美在线播放 | 久久这里只有精品首页 | 1000部拍拍拍18免费网站 | 在线欧美日韩精品一区二区 | 成人国产一区二区三区精品 | 亚洲国产成人手机在线电影bd | 亚洲不卡av不卡一区二区 | 欧美成人看片一区二区三区 | 国产婷婷综合在线精品尤物 | 亚洲一级高清在线中文字幕 | 亚洲欧洲视频在线观看 | 九九九在线视频 | 在线五月婷婷 | 午夜影院亚洲 | 欧美黑人乱大交灬太大了视频 | 免费大学生国产在线观看p 免费大黄网站在线观看 | 超级碰碰碰在线观看 | 久久精品视频久久 | 伊人丁香 | 青草五月天 | 一本一本大道香蕉久在线精品 | 亚洲色图100p | 久热青青青在线视频精品 | 国产一区中文字幕在线观看 | 欧美一级特黄真人毛片 | 亚洲高清国产拍精品影院 | 午夜色a大片在线观看免费 午夜色图 | 亚洲欧美综合 |