kylin剪枝優化的兩種方式

2022-06-24 16:27:08 字數 1091 閱讀 4010

1.衍生維度。

在kylin中,如果某些維度都屬於同一種型別,且數量較多,可以考慮做成衍生維度。

衍生維度就是將一批維度做成一張維度表,只在源表中保留這張表的外來鍵,這樣預處理的時候,就只會處理這個外來鍵,而不會去處理維度表中的維度,降低cuboid的數量。

衍生維度用於在有效維度內將維度表上的非主鍵維度排除掉,在查詢的時候實時進行聚合。

用衍生維度需要注意的一點是:如果從維度表主鍵到某個維度表維度所需要的聚合工作量非常大,那就不適合做衍生維度,實時進行聚合的時候會等待過長的時間。

2.使用聚合組

聚合組是一種強大的剪枝工具。系統會按照聚合組去預處理cuboid,不在聚合組或跨組的cuboid都不會產生。

每個分組維度集合均是cube所有維度的乙個子集。

所有分組貢獻的cuboid就是當前cube所有需要物化的cuboid。

由於聚合組內的維度可以重複,因此不同的聚合組會產生相同的cuboid,kylin引擎會保證他們只物化一次。

在聚合組內,你可以對維度進行以下設定:

1.設定成強制維度。這樣該聚合組產生的cuboid都要有這個維度。

打個比方,該聚合組裡有a,b,c三個維度,將a設定成強制維度,則該聚合組會產生  a,ab,ac,abc 4種cuboid,

而不會產生b , c , bc 這三個cuboid,減少了3個。

2.設定成層級維度。如果乙個聚合組的維度中有層級關係,比如省--市--區--街道,就可以設定層級維度。

層級維度不允許子層級出現的時候父層級不出現,比如,你可以 group by 省,市 但是你不能 group by 市, 也不能 group by 省 ,區

舉例,該聚合組有 a b c 三個維度 且設定成層級維度 a>b>c. 則該聚合組會產生 a, ab, abc 三個cuboid

不會產生 b,c,bc,ac 這4個cuboid,減少了4個。

3.設定成聯合維度,這些維度要麼一起出現,要麼都不出現。 

舉例,該聚合組有 a b c 三個維度,且設定 ab為聯合維度,則該聚合組會產生 c,ab,abc 三個cuboid

而不會產生 a,b ,ac,bc, 減少了4個。

氣泡排序及兩種優化方式

定義 每一趟依次比較相鄰的兩個數,將小數放在前面,大數放在後面,直到一趟只剩下乙個元素。時間複雜度 o n 2 氣泡排序是最常用的小型資料排序方式,下面是用c語言實現的,及其兩種優化方式。第一種優化方式是設定乙個標記位來標記是否發生了交換,如果沒有發生交換就提前結束 第二種優化方式是記錄最後發生交換...

Oracle的優化器有兩種優化方式 二

15.use concat 對查詢中的where後面的or條件進行轉換為union all的組合查詢.懵懂啊,先存著 例如 select use concat from emp where deptno 10 or empno 7788 execution plan 0 select stateme...

C DLL匯出的兩種方式和鏈結的兩種方式

第一種 匯出方式 extern c declspec dllexport int plus int x,int y extern c declspec dllexport int sub int x,int y extern c declspec dllexport int mul int x,in...