DB2 并行版本中的查询优化_MySQL
DB2
1、简介
SN, GAMMA, BUBBA,
SM, XPRS
DB2 Parallel Edition(DB2 PE) 运行于 AIX 并行机上,例如 SP2 等。它基于 SN 的体系结构和 Function Shipping 执行模型,提供了可扩展性和大处理能力。基于代价优化,其代价考虑了 CPU 、 IO 和消息传递。保证 ACID 特性,并行化的工具包括:
Load,Import,Reorganize Data,Create Index。还提供了一个并行数据重组织工具 Redistribute 有效的更正和处理负载不均衡。 Function shipping 指的是在数据存储地点进行相应的数据操作,进行必要的数据过滤,从而减少网络之间传递的数据量。系统设置了服务协调者,负责接受用户输入的 SQL 语句、分发查询执行任务和返回最终结果。除此之外,需要做的工作有:
生成并行查询执行计划、数据和控制流、进程管理、并行事务和封锁管理、并行工具。
支持 HASH 数据分片,扩展了 DDL :
CREATE NODEGROUP GROUP_1 ON ONODES(1 TO 32,40,45,48);
CREATE TABLE PARTS(Partkey integer, Partno integer) IN GROUP_1
PARTITIONING KEY(Partkey) USING HASHING;
CREATE TABLE PARTSUPP(Partkey integer, Suppkey integer) IN GROUP_1
PARTITIONING KEY(Partkey) USING HASHING;
HASH 函数是系统内置的。不同表在分片列上属性值相同的元组被划分到同一个结点。这样的表称为 collocated 。于是在这些表上的等值连接称为 collocated joins 。例如 PARTSx (Partkey=Partkey) PARTSUPP 。
2 、查询优化
(1) 代价优化——考虑了操作的固有并行性和消息通讯的代价;
(2) 综合利用数据分布信息——利用基表和中间结果表的数据分布和分片信息;
(3) 透明的并行性——几乎不需要从重写查询。
2.1 扩展的操作符
系统可以利用串行版本的基本操作,例如 Scan 等,但是还需要扩展:
(1) 用于控制多个子任务协同执行的操作——协调者;
(2) 进程间通讯操作 send/receive , send 可以是广播或者单播, receive 可以是 merge 多个有序的输入,也可以是 FIFO。
2.2 分片方法
DB2 的分片方法可以看作一个有效的负载均衡工具。优化器充分利用分片和结点组的信息,优化查询,例如 collocated joins。
2.3 查询优化和查询计划生成
查询优化器所做的主要工作有: 1) 选择优化的连接次序, 2) 确定基本表的存取方法和连接方式, 3) 决定操作的执行结点,例如数据的重新分片, 4) 计算查询执行代价要考虑系统资源消耗和响应时间。 DB2 PE 采用了简化的规则:
1) 在自底向上产生查询执行计划的时候,累计每个结点所占用的系统资源,其中的最大值作为系统响应时间。忽略了协调者的执行代价,以及多进程干扰的复杂性;
2) 在所有可能执行连接的节点子集中决定执行结点时,只考虑其中的一部分结点,例如内表分片所在的结点,外表分片所在的结点,以及其他的一些结点(没有具体的说明)。由此简化了计划生成的搜索空间,保持在串行搜索空间的线性比例上。
连接操作的执行方法包括: collocated, directed, broadcast, repartitioned 。 directed join 指的是连接在一个输入关系所在的节点进行,而把另外一个关系的元组发送到适当的节点(例如在一个输入关系的分片属性上做等值连接)。 repartitioned join 指的是重新分布输入的连个关系,例如做等值连接时。 broadcat join 指的是在连接之前把其中一个关系的元组广播到另一个关系所在的节点组,这可以对应于任意类型的连接。
基于代价的优化——两阶段优化不再适合。数据分片和放置对查询计划的选择有很大的影响。
2.4 所有操作的并行化
1、聚集操作——在各个子任务执行聚集函数,必要时在全局执行最后的处理。对 Group By 子局来说,重新分片可能比直接采用输入数据具有更好的并行性。
2、集合操作——采用 collocated, repartitioned 策略。注意 UNION 可以是一个 N 元操作。
3、带有子查询的 Insert 语句, Update 和 Delete 语句—— Insert 语句和子查询可能是 collocated 。或者采用 directing 方式。 Update 和 Delete 总是和相应的查询 collocated ( Update 如果发生在分片属性上,还需要考虑重新分片受到影响的元组)。
4、外连接——主要的策略与普通的连接一致,但是要避免产生多个由于没有匹配元组而产生的结果元组。
5、子查询——把子查询的结果发送到计算包含子查询的谓词的节点采用 collocated, directed, broadcast 方法。
3. 子查询的处理
嵌套查询的例子:
select *
from t1
where t1.a in (select b
from t2
where t2.c = t1.a and t2.d in (select b
from t3
where t3.a = 10
));
最里面的子查询只需要执行一次即可。但是下面的查询则不然:
select *
from t1
where t1.a in ( select b
from t2
where t2.c = t1.a and t2.d in ( select b
from t3
where t3.a = t1.f
));
子查询处理需要注意的问题包括:
(1) 避免为每个外查询产生的元组启动一个子查询,这样的代价太大了;
(2) 保证产生外查询元组的不同节点不会因为子查询的执行而串行化;
(3) 保证正确的外查询节点得到执行的结果;
(4) 尽量下移谓词,从而减少数据的传输。
我们用一个简单的一层相关查询来看看 DB2 是如何处理嵌套查询的:
select *
from t1
where t1.a > ( select avg(t2.b)
from t2
where t2.c = t1.d
);

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

La complexité temporelle mesure le temps d'exécution d'un algorithme par rapport à la taille de l'entrée. Les conseils pour réduire la complexité temporelle des programmes C++ incluent : le choix des conteneurs appropriés (tels que vecteur, liste) pour optimiser le stockage et la gestion des données. Utilisez des algorithmes efficaces tels que le tri rapide pour réduire le temps de calcul. Éliminez les opérations multiples pour réduire le double comptage. Utilisez des branches conditionnelles pour éviter les calculs inutiles. Optimisez la recherche linéaire en utilisant des algorithmes plus rapides tels que la recherche binaire.

La configuration des paramètres du Vivox100 révélée : Comment optimiser les performances du processeur ? À l’ère actuelle de développement technologique rapide, les smartphones sont devenus un élément indispensable de notre vie quotidienne. En tant qu'élément important d'un smartphone, l'optimisation des performances du processeur est directement liée à l'expérience utilisateur du téléphone mobile. En tant que smartphone haut de gamme, la configuration des paramètres du Vivox100 a attiré beaucoup d'attention, en particulier l'optimisation des performances du processeur a attiré beaucoup d'attention de la part des utilisateurs. En tant que « cerveau » du téléphone mobile, le processeur affecte directement la vitesse de fonctionnement du téléphone mobile.

1. Appuyez sur la combinaison de touches (touche Win + R) sur le bureau pour ouvrir la fenêtre d'exécution, puis entrez [regedit] et appuyez sur Entrée pour confirmer. 2. Après avoir ouvert l'éditeur de registre, nous cliquons pour développer [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer], puis voyons s'il y a un élément Sérialiser dans le répertoire. Sinon, nous pouvons cliquer avec le bouton droit sur Explorateur, créer un nouvel élément et le nommer Sérialiser. 3. Cliquez ensuite sur Sérialiser, puis cliquez avec le bouton droit sur l'espace vide dans le volet de droite, créez une nouvelle valeur de bit DWORD (32) et nommez-la Étoile.

Cinq façons d'optimiser l'efficacité des fonctions PHP : évitez la copie inutile de variables. Utilisez des références pour éviter la copie de variables. Évitez les appels de fonction répétés. Fonctions simples en ligne. Optimisation des boucles à l'aide de tableaux.

Les fonctions Java offrent une excellente évolutivité et maintenabilité dans les grandes applications grâce aux caractéristiques suivantes : Évolutivité : apatride, déploiement élastique et intégration facile, permettant un ajustement facile de la capacité et une mise à l'échelle du déploiement. Maintenabilité : la modularité, le contrôle des versions ainsi que la surveillance et la journalisation complètes simplifient la maintenance et les mises à jour. En utilisant les fonctions Java et l'architecture sans serveur, un traitement plus efficace et une maintenance simplifiée peuvent être obtenus dans les grandes applications.

Dans le développement C++ moderne, l’utilisation d’outils et de bibliothèques d’optimisation est cruciale. Des outils tels que Valgrind, Perf et LLDB identifient les goulots d'étranglement, mesurent les performances et déboguent. Les bibliothèques telles que Eigen, Boost et OpenCV améliorent l'efficacité dans des domaines tels que l'algèbre linéaire, les E/S réseau et la vision par ordinateur. Par exemple, utilisez Eigen pour optimiser la multiplication matricielle, Perf pour analyser les performances du programme et Boost::Asio pour mettre en œuvre des E/S réseau efficaces.

Récemment, "Black Myth : Wukong" a attiré une énorme attention dans le monde entier. Le nombre d'utilisateurs en ligne simultanés sur chaque plateforme a atteint un nouveau sommet. Ce jeu a connu un grand succès commercial sur plusieurs plateformes. La version Xbox de "Black Myth : Wukong" a été reportée. Bien que "Black Myth : Wukong" soit sorti sur les plateformes PC et PS5, il n'y a pas eu de nouvelles définitives concernant sa version Xbox. Il est entendu que le responsable a confirmé que "Black Myth : Wukong" serait lancé sur la plateforme Xbox. Cependant, la date précise de lancement n’a pas encore été annoncée. Il a été récemment rapporté que le retard de la version Xbox était dû à des problèmes techniques. Selon un blogueur concerné, il a appris grâce aux communications avec les développeurs et les « initiés Xbox » lors de la Gamescom que la version Xbox de « Black Myth : Wukong » existe.

Stratégies pour optimiser le débit du serveur C++ : Pool de threads : créez un pool de threads à l'avance pour répondre rapidement aux demandes. E/S non bloquantes : effectuez d'autres tâches en attendant que les E/S améliorent le débit. HTTP/2 : utilise un protocole binaire, prend en charge le multiplexage et la compression de contenu et améliore les performances.
