当前位置:网站首页>Analyse de l'optimisation de la réécriture des requêtes lazyagg de l'entrepôt
Analyse de l'optimisation de la réécriture des requêtes lazyagg de l'entrepôt
2022-06-25 13:00:00 【Huawei Cloud Developer Alliance】
Résumé:Le présent document porte sur:Lazy AggOptimisation de la réécriture des requêtes etGaussDB(DWS)FourniLazy AggRègles de réécriture pour l'introduction.
Cet article est partagé par Huawei Cloud Community《GaussDB(DWS) lazyaggRequête outrepasser la résolution d'optimisation【Gauss n'est pas mathématicien cette fois】》,Auteur: OreoreO .
L'opération d'agrégation regroupe les résultats de la requête par les valeurs d'une ou plusieurs colonnes,Les valeurs égales sont un ensemble de.Les opérations agrégées sont courantes et sont largement utilisées par les clients financiers.Par exemple, l'énoncé suivant:
SELECT a, count(a) FROM t1 GROUP BY a; -- Appuyez.aGrouper et calculer le nombre de valeurs répétées dans le GroupeUn.、Lazy AggRègles de réécriture
Dans un scénario avec une grande quantité de données,Opération d'agrégation en raison de la grande quantité de données,Le temps d'exécution des opérations agrégées devient un goulot d'étranglement de performance,Il en résulte une très faible efficacité d'exécution de l'ensemble de la requête.Par exemple:
SELECT t2.b, sum(cc) FROM (SELECT b, sum(c) AS cc FROM t1 GROUP BY b) AS s, t2 WHERE s.b=t2.b GROUP BY t2.b;Paire de sous - Requêtest1.bColonnes agrégées,C'est exact.t1.cSomme des colonnes,Dans une requête externe,Il y a aussi des opérations d'agrégation,Colonnes agrégées pour les sous - RequêtesccSomme des colonnes.Pour de telles déclarations,Lorsque l'agrégation des sous - requêtes prend du temps,Les règles de réécriture des requêtes peuvent être utilisées pour éliminer l'agrégation des sous - Requêtes,L'opération d'agrégation est effectuée uniformément par la fonction d'agrégation de la requête externe.L'élimination des sous - requêtes peut entraîner une augmentation du nombre de lignes de sous - Requêtes,Mais pour les opérations d'agrégation de sous - Requêtest1.bColonnedistinctScénario avec plus de valeur,Il n'y a pas de réduction significative du nombre de lignes après l'opération d'agrégation des sous - requêtes par rapport au tableau original.,Ne provoque pas de couche externeJOINAugmentation substantielle du volume de calcul.C'est - à - dire que l'instruction peut être réécrite comme suit::
SELECT t2.b, sum(cc) FROM (SELECT b, c AS cc FROM t1) AS s, t2 WHERE s.b=t2.b GROUP BY t2.b;Cette règle de réécriture s'appelleLazy Agg,Applicable aux grandes quantités de données du tableau de base etdistinctScénario avec plus de valeur.Si moins de valeurs répétées,L'élimination de l'agrégation peut entraînerJoinAugmentation du nombre de lignes après,JoinMauvais rendement,Il est donc nécessaire deAggPousser vers le basJoinAvant,Par avanceAggRéduction des opérationsJoinNombre de lignes de résultats,Cette règle de réécriture s'appelleEager Agg.
2.、GaussDB(DWS) lazyaggOptimisation
Pour réduire la difficulté de réglage,Améliorer la facilité d'utilisation des produits,GaussDB(DWS)OffrelazyaggRequête outrepasser les règles d'optimisation,Peut être réglé pargucParamètresrewrite_ruleContient’lazyagg’UtiliserLazy AggOptimisation de la réécriture des requêtes.OuvertlazyaggAprès optimisation de la réécriture des requêtes,Optimiser et éliminer les opérations d'agrégation dans les sous - Requêtes pour les scénarios qualifiés.Le plan initial était le suivant::

lazyaggLe calendrier après optimisation est le suivant::

Vous pouvez voir que par rapport au plan original,lazyaggL'opération d'agrégation dans le plan original a été éliminée après l'optimisation de la réécriture,C'est - à - dire:7No.Subquery ScanOpérateurs et8No.HashAggregateOpérateur.
Trois、lazyaggOptimiser les spécifications
- Prise en charge des sous - Requêtes pour les requêtes groupées simples ou les requêtes contenant des opérations groupées de sous - ensembles.Les opérations de collecte ne sont prises en charge queUNION ALL,L'opération d'agrégation peut être éliminée pour certaines sous - requêtes de branche.Sous - Requête requiseJOINUn des tableaux(Non.TargetList、WhereAutres positions telles que les clauses).
- Prend en charge toutes les requêtes externesAggUne colonne de paramètres contientAggColonne de fonction,L'agrégation de cette sous - requête peut être éliminée.
- Prise en charge de tous les types de fonctions d'agrégation avec des résultats corrects après l'élimination de l'agrégation des sous - Requêtes.Voir le tableau ci - dessous pour l'exactitude des résultats des catégories de fonctions agrégées.:

4. Contraintes de scène
Sur la base de l'extension du scénario ci - dessus,Pour les scénarios qui peuvent entraîner des résultats incorrects,Ne pas outrepasser la requête,Y compris, sans s'y limiter:
- Élimination non prise en chargeAggType de fonction.
- La Sous - Requête contient d'autres conditions ou opérateurs,Peut entraîner des résultats incorrects après la réécriture,Par exempleHAVING、window agg、LIMIT、OFFSET、AP function、distinct、recursiveAttendez..
- La couche externeAggColonne des paramètres、GROUP BYColonne ouJOINColonne contenantvolatileFonctions,Par exemple:random、timeofdayAttendez..
- Sous - RequêteAggEn dehors de la fonction、Requête externeAggIl y a d'autres expressions ou opérations de fonction dans la fonction,Comme sous - RequêteAggLa colonne de fonction estsum+1、max+max(d),Requête externeAggLa colonne de fonction estsum(cc+1)Attendez..
- Requête externeJOINColonnes、GROUP BYColonnes ou autres critères contenant des sous - RequêtesAggColonne de fonction.
- Sous - requête dansLEFT JOIN、RIGHT JOINDeinnerEdge orFULL JOINMoyenne,Et sous - RequêteAggLa fonction estcount,Requête externeAggLa fonction estsumDe.
Quatre、Conclusion
Par l'analyse de cet article,Je crois que les amis de l'utilisateur ont bien comprisLazy AggOutrepasser les scénarios d'utilisation optimisés,EtGaussDB(DWS)DelazyaggMode de réalisation.J'espère que les utilisateurs pourront mieux comprendre,C'est exact.GaussDB(DWS)L'ajustement des performances a suscité un vif intérêt et une forte participation.
Documents de référence:
GaussDB(DWS)Série de réglage des performances chapitre 4:18 arts martiauxSQLRéécriture
La théorie n'est pas aussi bonne que la pratique , Comment faire l'expérience rapidement DWSEt alors??DWS Maintenant, un DemoActivités expérientielles.EntréeDWSPage d'accueil,Cliquez sur“DemoExpérience”, Une expérience rapide et pratique !( Suggestions et commentaires au cours de l'expérience ,Je peux y aller.DWSForum communautaire Feedback oh )
Cliquez sur suivre,Pour la première fois, découvrez la nouvelle technologie Huawei Cloud~
边栏推荐
- 药物设计新福音:腾讯联合中科大、浙大开发自适应图学习方法,预测分子相互作用及分子性质
- Spoken English - weak reading
- 利用cmd(命令提示符)安装mysql&&配置环境
- CUDA error: unspecified launch failure
- leetcode - 384. 打乱数组
- Negative sample image used in yolov5 training
- Koa frame
- Sword finger offer day 1 stack and queue (simple)
- Capabilities required by architects
- 量化交易之回测篇 - 期货CTA策略策略(TQZFutureRenkoWaveStrategy)
猜你喜欢

The drop-down box renders numbers instead of the corresponding text. How to deal with it

Summer Ending

Koa 框架

Serevlt初识

Online service emergency research methodology

First acquaintance with CANopen
模块五(微博评论)

Possible problems when idea encounters errors occurred while compiling module (solved)
![[转]以终为始,详细分析高考志愿该怎么填](/img/77/715454c8203d722e246ed70e1fe0d8.png)
[转]以终为始,详细分析高考志愿该怎么填

515. Find Largest Value in Each Tree Row
随机推荐
量化交易之回测篇 - 期货CTA策略实例(TQZFutureRenkoScalpingStrategy)
mysql导入导出数据到excel表日期出现问题
The editor is used every day. What is the working principle of language service protocol?
2021-09-28
Resolution of PPT paper drawing
【AI助力科研】loss曲线傻瓜式绘制
15 basic SEO skills to improve ranking
1024水文
LeetCode链表题解技巧归纳总结
MySQL writes user-defined functions and stored procedure syntax (a detailed case is attached, and the problem has been solved: errors are reported when running user-defined functions, and errors are r
德国举行全球粮食安全团结会议
And console Log say goodbye
CUDA error: unspecified launch failure
与生产环境中的 console.log 说再见
2021-09-22
Elemntui's select+tree implements the search function
First acquaintance with CANopen
list.replace, str.append
J2EE从入门到入土01.MySQL安装
JSTL tag: fmt:formatdate tag format Chinese standard time or timestamp