{"title":"Parallelizing loops in database programming languages","authors":"D. Lieuwen","doi":"10.1109/ICDE.1998.655762","DOIUrl":null,"url":null,"abstract":"Database programming languages (DBPLs), fourth generation languages (4GLs) and embedded SQL all include the ability to iterate sequentially through a set/relation. Nested iterators can be used to express joins. Without program analysis, such joins must be evaluated using a tuple-at-a-time join algorithm at a central site, otherwise program semantics may be violated. This paper's analysis often allows parallel join algorithms to be used. Also, this paper's compile-time optimizations can produce better parallel code than a straightforward parallelization of the nested iterators. The transformations allow the compiler to identify parallelization opportunities that it could not detect in the original code. These techniques are important for aiding the migration from hand-optimized code on a sequential machine to system-optimized code on a parallel machine. Without such rewrites, moving to a parallel system may produce only meager performance improvements when porting legacy systems.","PeriodicalId":264926,"journal":{"name":"Proceedings 14th International Conference on Data Engineering","volume":"69 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1998-02-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"4","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings 14th International Conference on Data Engineering","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/ICDE.1998.655762","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 4
Abstract
Database programming languages (DBPLs), fourth generation languages (4GLs) and embedded SQL all include the ability to iterate sequentially through a set/relation. Nested iterators can be used to express joins. Without program analysis, such joins must be evaluated using a tuple-at-a-time join algorithm at a central site, otherwise program semantics may be violated. This paper's analysis often allows parallel join algorithms to be used. Also, this paper's compile-time optimizations can produce better parallel code than a straightforward parallelization of the nested iterators. The transformations allow the compiler to identify parallelization opportunities that it could not detect in the original code. These techniques are important for aiding the migration from hand-optimized code on a sequential machine to system-optimized code on a parallel machine. Without such rewrites, moving to a parallel system may produce only meager performance improvements when porting legacy systems.