Key points are not available for this paper at this time.
À mesure que la mémoire principale augmente, la performance des requêtes est de plus en plus déterminée par les coûts CPU bruts du traitement des requêtes lui-même. La technique classique de traitement de requête par itérateur est très simple et flexible, mais montre de faibles performances sur les CPU modernes en raison de l'absence de localité et de prédictions d'instructions fréquentes. Plusieurs techniques comme le traitement par lots ou le traitement vectorisé des tuples ont été proposées par le passé pour améliorer cette situation, mais même ces techniques sont souvent surpassées par des plans d'exécution écrits à la main. Dans ce travail, nous présentons une nouvelle stratégie de compilation qui traduit une requête en code machine compact et efficace en utilisant le cadre de compilation LLVM. En visant une bonne localité de code et de données et un agencement de branches prévisible, le code résultant rivalise souvent avec les performances du code C++ écrit à la main. Nous avons intégré ces techniques dans le système de base de données en mémoire principale HyPer et montrons que cela entraîne d'excellentes performances de requête tout en nécessitant uniquement un temps de compilation modeste.
Thomas Neumann (Mer,) a étudié cette question.