Duplicate 模型中的 ROLLUP(十六)

因為 Duplicate 模型沒有聚合的語意。所以該模型中的 ROLLUP,已經失去了“上卷”這一層含義。而僅僅是作為調整列順序,以命中前綴索引的作用。下面詳細介紹前綴索引,以及如何使用 ROLLUP 改變前綴索引,以獲得更好的查詢效率。

前綴索引

不同于傳統的數據庫設計,Doris 不支持在任意列上創建索引。Doris 這類 MPP 架構的 OLAP 數據庫,通常都是通過提高并發,來處理大量數據的。

本質上,Doris 的數據存儲在類似 SSTable(Sorted String Table)的數據結構中。該結構是一種有序的數據結構,可以按照指定的列進行排序存儲。在這種數據結構上,以排序列作為條件進行查找,會非常的高效。

在 Aggregate、Uniq 和 Duplicate 三種數據模型中。底層的數據存儲,是按照各自建表語句中,AGGREGATE KEY、UNIQ KEY 和 DUPLICATE KEY 中指定的列進行排序存儲的。而前綴索引,即在排序的基礎上,實現的一種根據給定前綴列,快速查詢數據的索引方式。

我們將一行數據的前 36 個字節 作為這行數據的前綴索引。當遇到 VARCHAR 類型時,前綴索引會直接截斷。舉例說明:

1)以下表結構的前綴索引為 user_id(8 Bytes) + age(4 Bytes) + message(prefix 20 Bytes)

2)以下表結構的前綴索引為 user_name(20 Bytes)。即使沒有達到 36 個字節,因為遇到VARCHAR,所以直接截斷,不再往后繼續。

3)當我們的查詢條件,是前綴索引的前綴時,可以極大的加快查詢速度。比如在第一個例子中,我們執行如下查詢:

SELECT * FROM table WHERE user_id=1829239 and age=20;

該查詢的效率會遠高于如下查詢:

SELECT * FROM table WHERE age=20;

所以在建表時,正確的選擇列順序,能夠極大地提高查詢效率。

ROLLUP 調整前綴索引

因為建表時已經指定了列順序,所以一個表只有一種前綴索引。這對于使用其他不能命中前綴索引的列作為條件進行的查詢來說,效率上可能無法滿足需求。因此,我們可以通過創建 ROLLUP 來人為的調整列順序。舉例說明。 Base 表結構如下:

我們可以在此基礎上創建一個 ROLLUP 表:

可以看到,ROLLUP 和 Base 表的列完全一樣,只是將 user_id 和 age 的順序調換了。那么當我們進行如下查詢時:

SELECT * FROM table where age=20 and message LIKE "%error%";

會優先選擇 ROLLUP 表,因為 ROLLUP 的前綴索引匹配度更高

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166866.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166866.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166866.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微服務保護 Sentinel

1.初識Sentinel 文章目錄 1.初識Sentinel1.1.雪崩問題及解決方案1.1.1.雪崩問題1.1.2.超時處理1.1.3.倉壁模式1.1.4.斷路器1.1.5.限流1.1.6.總結 1.2.服務保護技術對比1.3.Sentinel介紹和安裝1.3.1.初識Sentinel1.3.2.安裝Sentinel 1.4.微服務整合Sentinel 2.流量控制2.1.簇點鏈…

C語言—指針初始化

指針初始化&#xff1a;指針初始情況下指向哪個地址。兩種指針初始化方式 1、聲明指針時就進行指針初始化&#xff0c;告訴指針指向哪個地址 #include <stdio.h> int main () {int i5;int *p&i;return 0; }2、聲明指針時未進行初始化&#xff0c;在后期把指向的地…

MacM1(ARM)安裝Protocol Buffers

MacM1(ARM)安裝Protocol Buffers 本文目錄 MacM1(ARM)安裝Protocol Buffers3.21之前版本安裝使用configure3.22之后版本安裝使用cmake使用編譯后的版本 protobuf下載地址&#xff1a;https://github.com/protocolbuffers/protobuf/releases 在運行./autogen.sh或./configure命…

大表查詢如何優化?

大表查詢的優化方法有以下幾種&#xff1a; 索引優化&#xff1a;通過建立合理高效的索引&#xff0c;提高查詢的速度。SQL優化&#xff1a;組織優化SQL語句&#xff0c;使查詢效率達到最優&#xff0c;在很多情況下要考慮索引的作用。水平拆表&#xff1a;如果表中的數據呈現…

curl添加https服務

CURL支持的通信協議有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。 首選刪除系統自帶的openssl&#xff0c;因為他只有可執行程序和庫&#xff0c;沒有頭文件。 sudo apt-get remove openssl openssl官網&am…

CentOS7磁盤掛載

1 引言 本文主要講述CentOS7磁盤掛載相關知識點和操作。 2 磁盤掛載 步驟1&#xff1a; 查看機器所掛硬盤及分區情況 fdisk -l查詢結果&#xff1a; 由上圖可以看到該結果包含&#xff1a;硬盤名稱、硬盤大小等信息。 屬性解釋說明Disk /dev/vda硬盤名稱53.7G磁盤大…

6S精益管理必備裝備降低物料損耗

在工廠生產環境中&#xff0c;設備管理是確保生產效率和質量的關鍵因素之一。6S管理方法是一種源自日本的管理體系&#xff0c;旨在通過整頓、整理、清掃、清潔、素養、遵守六個步驟&#xff0c;實現工作環境的優化和管理的高效。 倉庫管理中&#xff0c;庫存損耗一直是企業面…

分布式篇---第四篇

系列文章目錄 文章目錄 系列文章目錄前言一、分布式ID生成有幾種方案?二、冪等解決方法有哪些?三、常見負載均衡算法有哪些?前言 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站,這篇文章男女通用,看懂了就去分享給…

多回路交流三相單相電壓電流電量監測開口式互感器適用多種環境用電能耗監控

1 產品概述 多回路交流無線電壓電流傳感器/電量采集監測儀搭配多路開口式互感器&#xff0c;可以監控采集三相電壓、電流、功率和電量等信息&#xff0c;可用于能耗采集監控。支持RS485和4G網絡接口&#xff0c;數據可以對接客戶指定的第三方云平臺。本產品可實現單相/三相用電…

Spring事務的實現方式和實現原理;事務聲明的方式,Spring的事務傳播行為,spring事務的實現原理

Spring事務的實現方式和實現原理 Spring事務的本質其實就是數據庫對事務的支持&#xff0c;沒有數據庫的事務支持&#xff0c;spring是無法提供事務功能的。真正的數據庫層的事務提交和回滾是通過binlog或者redo log實現的。 什么是事務 數據庫事務是指作為單個邏輯工作單元執…

發布本地(sap hana)Jar包到Maven私有倉庫

在控制臺執行如下命令&#xff1a; mvn deploy:deploy-file -DgroupId"com.sap.cloud.db.jdbc" -DartifactId"ngdbc" -Dversion"2.0.13" -Dpackaging"jar" -Dfile"F:\sap_ngdbc\ngdbc-2.0.13.jar" -DrepositoryId"rel…

Co-DETR:DETRs與協同混分配訓練論文學習筆記

論文地址&#xff1a;https://arxiv.org/pdf/2211.12860.pdf 代碼地址&#xff1a; GitHub - Sense-X/Co-DETR: [ICCV 2023] DETRs with Collaborative Hybrid Assignments Training 摘要 作者提出了一種新的協同混合任務訓練方案&#xff0c;即Co-DETR&#xff0c;以從多種標…

網站會遭受那些攻擊,要怎么應對

隨著互聯網的普及和發展&#xff0c;很多企業或個人都建立了自己的網站&#xff0c;這些網站不僅可以展示企業或個人的信息&#xff0c;還可以提供各種服務和交流平臺。但是&#xff0c;在運營網站的過程中&#xff0c;很多人都會遇到網站被流量攻擊的情況&#xff0c;這種情況…

gmapping仿真

文章目錄 獲取源碼安裝依賴項編譯簡單場景運行gmapping開啟鍵盤控制通過launch文件來啟動gmappingGmapping建圖的參數設置地圖的保存和加載參考 獲取源碼 cd ~/catkin_ws/src/ git clone https://gitcode.com/weixin_42990464/wpr_simulation.git git clone https://gitcode.c…

【開源】基于Vue.js的農村物流配送系統的設計和實現

項目編號&#xff1a; S 024 &#xff0c;文末獲取源碼。 \color{red}{項目編號&#xff1a;S024&#xff0c;文末獲取源碼。} 項目編號&#xff1a;S024&#xff0c;文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 系統登錄、注冊界面2.2 系統功能2.2…

java使用poi框架導出excel文件名命名為中文的方法

最近使用poi框架實現自動化報表導入導出功能&#xff0c;但是遇到一個問題&#xff0c;導出的表格命名為中文時不被識別&#xff0c;直接會以接口名為文件名導出&#xff0c;那么如何解決這個問題呢&#xff1f; 三行代碼解決&#xff1a; String fileName "xxxx統計表-…

小程序:用戶查找英語單詞的意思 ← Python字典

【程序分析】 ● 字典中的條目是沒有順序的。 ● 可以對字典使用如下方法&#xff1a; keys()、values()、 items()、 clear()、 get(key)、 pop(key) 和popitem()【程序代碼】 dictionary{"dog":"狗","apple":"蘋果","banana&q…

Java字節碼指令集概述及分類詳解

Java全能學習面試指南&#xff1a;https://javaxiaobear.cn 1、字節碼指令集與解析概述 Java字節碼對于虛擬機&#xff0c;就好像匯編語言對于計算機&#xff0c;屬于基本執行指令。 Java 虛擬機的指令由一個字節長度的、代表著某種特定操作含義的數字&#xff08;稱為操作碼&a…

醫院供暖換熱站遠程監控案例

醫院供暖換熱站遠程監控案例 本文針對醫院換熱站遠程監控系統存在的問題&#xff0c;提出了一種基于物聯網技術的解決方案。通過使用云平臺功能&#xff0c;實現對換熱站設備的遠程監控和管理&#xff0c;提高系統運行效率&#xff0c;降低運維成本。 一&#xff0e;痛點 1、…

C語言——深入理解指針(1)

目錄 1.內存與地址 1.1 什么是內存 1.2 編址 2. 指針的變量和地址 2.1 取地址&#xff08;&&#xff09; 2.2 指針變量 2.3 解引用 2.4 指針變量大小 3. 指針變量類型存在的意義 3.1 不同類型指針的解引用 3.2 指針對整數的運算&#xff08;&#xff0c;-&#…