{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,20]],"date-time":"2026-06-20T01:11:20Z","timestamp":1781917880345,"version":"3.54.5"},"reference-count":32,"publisher":"Association for Computing Machinery (ACM)","issue":"2","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2017,10]]},"abstract":"<jats:p>\n            Index join performance is determined by the efficiency of the lookup operation on the involved index. Although database indexes are highly optimized to leverage processor caches, main memory accesses inevitably increase lookup runtime when the index outsizes the last-level cache; hence, index join performance drops. Still, robust index join performance becomes possible with\n            <jats:italic>instruction stream interleaving<\/jats:italic>\n            : given a group of lookups, we can hide cache misses in one lookup with instructions from other lookups by switching among their respective instruction streams upon a cache miss.\n          <\/jats:p>\n          <jats:p>\n            In this paper, we propose interleaving with coroutines for any type of index join. We showcase our proposal on SAP HANA by implementing binary search and CSB\n            <jats:sup>+<\/jats:sup>\n            -tree traversal for an instance of index join related to dictionary compression. Coroutine implementations not only perform similarly to prior interleaving techniques, but also resemble the original code closely, while supporting both interleaved and non-interleaved execution. Thus, we claim that coroutines make interleaving practical for use in real DBMS codebases.\n          <\/jats:p>","DOI":"10.14778\/3149193.3149202","type":"journal-article","created":{"date-parts":[[2017,12,12]],"date-time":"2017-12-12T18:33:38Z","timestamp":1513103618000},"page":"230-242","source":"Crossref","is-referenced-by-count":36,"title":["Interleaving with coroutines"],"prefix":"10.14778","volume":"11","author":[{"given":"Georgios","family":"Psaropoulos","sequence":"first","affiliation":[{"name":"EPFL, Lausanne, Switzerland and SAP SE, Walldorf, Germany"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Thomas","family":"Legler","sequence":"additional","affiliation":[{"name":"SAP SE, Walldorf, Germany"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Norman","family":"May","sequence":"additional","affiliation":[{"name":"SAP SE, Walldorf, Germany"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Anastasia","family":"Ailamaki","sequence":"additional","affiliation":[{"name":"EPFL, Lausanne, Switzerland and RAW Labs SA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2017,10]]},"reference":[{"key":"e_1_2_1_1_1","volume-title":"https:\/\/msdn.microsoft.com\/en-us\/library\/9k7k7cf0.aspx {Online","year":"2017","unstructured":"C# Reference. https:\/\/msdn.microsoft.com\/en-us\/library\/9k7k7cf0.aspx {Online ; accessed 14- August - 2017 }. C# Reference. https:\/\/msdn.microsoft.com\/en-us\/library\/9k7k7cf0.aspx {Online; accessed 14-August-2017}."},{"key":"e_1_2_1_2_1","volume-title":"https:\/\/wiki.python.org\/ moin\/Generators {Online","author":"Wiki Python","year":"2017","unstructured":"Generators. Python Wiki . https:\/\/wiki.python.org\/ moin\/Generators {Online ; accessed 14- August - 2017 }. Generators. Python Wiki. https:\/\/wiki.python.org\/ moin\/Generators {Online; accessed 14-August-2017}."},{"key":"e_1_2_1_3_1","unstructured":"Programming languages --- C++ extensions for coroutines.  Programming languages --- C++ extensions for coroutines."},{"key":"e_1_2_1_4_1","unstructured":"Transaction Processing Performance Council. TPC-DS benchmark version 2.3.0. http:\/\/www.tpc.org\/tpcds\/ {Online; accessed 14-August-2017}.  Transaction Processing Performance Council. TPC-DS benchmark version 2.3.0. http:\/\/www.tpc.org\/tpcds\/ {Online; accessed 14-August-2017}."},{"key":"e_1_2_1_5_1","first-page":"266","volume-title":"Proc. VLDB","author":"Ailamaki A.","year":"1999","unstructured":"A. Ailamaki , D. J. DeWitt , M. D. Hill , and D. A. Wood . DBMSs on a modern processor: where does time go ? In Proc. VLDB , pages 266 -- 277 , 1999 . A. Ailamaki, D. J. DeWitt, M. D. Hill, and D. A. Wood. DBMSs on a modern processor: where does time go? In Proc. VLDB, pages 266--277, 1999."},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1272743.1272747"},{"key":"e_1_2_1_7_1","volume-title":"Oracle Database In-Memory. Technical report","author":"Colgan M.","year":"2015","unstructured":"M. Colgan . Oracle Database In-Memory. Technical report , Oracle Corporation , 2015 . http:\/\/www.oracle.com\/technetwork\/database\/in-memory\/overview\/twp-oracle-database-in-memory-2245633.html. M. Colgan. Oracle Database In-Memory. Technical report, Oracle Corporation, 2015. http:\/\/www.oracle.com\/technetwork\/database\/in-memory\/overview\/twp-oracle-database-in-memory-2245633.html."},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/366663.366704"},{"issue":"1","key":"e_1_2_1_9_1","first-page":"28","article-title":"The SAP HANA Database - an architecture overview","volume":"35","author":"F\u00e4rber F.","year":"2012","unstructured":"F. F\u00e4rber , N. May , W. Lehner , P. Gro\u00dfe , I. M\u00fcller , H. Rauhe , and J. Dees . The SAP HANA Database - an architecture overview . IEEE Data Eng. Bull. , 35 ( 1 ): 28 -- 33 , 2012 . F. F\u00e4rber, N. May, W. Lehner, P. Gro\u00dfe, I. M\u00fcller, H. Rauhe, and J. Dees. The SAP HANA Database - an architecture overview. IEEE Data Eng. Bull., 35(1):28--33, 2012.","journal-title":"IEEE Data Eng. Bull."},{"issue":"1","key":"e_1_2_1_10_1","first-page":"40","article-title":"MonetDB: two decades of research in column-oriented database architectures","volume":"35","author":"Idreos S.","year":"2012","unstructured":"S. Idreos , F. Groffen , N. Nes , S. Manegold , S. Mullender , and M. Kersten . MonetDB: two decades of research in column-oriented database architectures . IEEE Data Eng. Bull. , 35 ( 1 ): 40 -- 45 , 2012 . S. Idreos, F. Groffen, N. Nes, S. Manegold, S. Mullender, and M. Kersten. MonetDB: two decades of research in column-oriented database architectures. IEEE Data Eng. Bull., 35(1):40--45, 2012.","journal-title":"IEEE Data Eng. Bull."},{"key":"e_1_2_1_11_1","volume-title":"June","author":"Intel Corporation","year":"2016","unstructured":"Intel Corporation . Intel\u00ae 64 and IA-32 Architectures Optimization Reference Manual , June 2016 . Intel Corporation. Intel\u00ae 64 and IA-32 Architectures Optimization Reference Manual, June 2016."},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2011.5767867"},{"key":"e_1_2_1_13_1","unstructured":"M. Kerrisk. The Linux Programming Interface: A Linux and UNIX System Programming Handbook.   M. Kerrisk. The Linux Programming Interface: A Linux and UNIX System Programming Handbook."},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1807167.1807206"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.14778\/2856318.2856321"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/106972.106981"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2882903.2882925"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/2463676.2463708"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1989323.1989448"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1007\/s007780000031"},{"key":"e_1_2_1_21_1","volume-title":"Understanding how general exploration works in Intel VTune Amplifier XE","author":"Marusarz J.","year":"2015","unstructured":"J. Marusarz . Understanding how general exploration works in Intel VTune Amplifier XE , 2015 . https:\/\/software.intel.com\/en-us\/articles\/understanding-how-general-exploration-works-in-intel-vtune-amplifier-xe {Online; accessed 14-August-2017}. J. Marusarz. Understanding how general exploration works in Intel VTune Amplifier XE, 2015. https:\/\/software.intel.com\/en-us\/articles\/understanding-how-general-exploration-works-in-intel-vtune-amplifier-xe {Online; accessed 14-August-2017}."},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1976.233837"},{"key":"e_1_2_1_23_1","volume-title":"Advanced SQL 1999: Understanding Object-Relational, and Other Advanced Features. Elsevier Science Inc.","author":"Melton J.","year":"2002","unstructured":"J. Melton . Advanced SQL 1999: Understanding Object-Relational, and Other Advanced Features. Elsevier Science Inc. , 2002 . J. Melton. Advanced SQL 1999: Understanding Object-Relational, and Other Advanced Features. Elsevier Science Inc., 2002."},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/1462166.1462167"},{"key":"e_1_2_1_25_1","first-page":"283","volume-title":"Proc. EDBT","author":"M\u00fcller I.","year":"2014","unstructured":"I. M\u00fcller , C. Ratsch , and F. F\u00e4rber . Adaptive string dictionary compression in in-memory column-store database systems . In Proc. EDBT , pages 283 -- 294 , 2014 . I. M\u00fcller, C. Ratsch, and F. F\u00e4rber. Adaptive string dictionary compression in in-memory column-store database systems. In Proc. EDBT, pages 283--294, 2014."},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.5555\/1315451.1315531"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.14778\/2536222.2536233"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/342009.335449"},{"key":"e_1_2_1_29_1","volume-title":"Improving a large C++ project with coroutines","author":"Team DB","year":"2010","unstructured":"Rethink DB Team . Improving a large C++ project with coroutines , 2010 . https:\/\/www.rethinkdb.com\/blog\/improving-a-large-c-project-with-coroutines\/ {Online; accessed 14-August-2016}. RethinkDB Team. Improving a large C++ project with coroutines, 2010. https:\/\/www.rethinkdb.com\/blog\/improving-a-large-c-project-with-coroutines\/ {Online; accessed 14-August-2016}."},{"key":"e_1_2_1_30_1","volume-title":"Windows Internals, Part 1: Covering Windows Server 2008 R2 and Windows 7","author":"Russinovich M. E.","year":"2012","unstructured":"M. E. Russinovich , D. A. Solomon , and A. Ionescu . Windows Internals, Part 1: Covering Windows Server 2008 R2 and Windows 7 . Microsoft Press , 6 th edition, 2012 . M. E. Russinovich, D. A. Solomon, and A. Ionescu. Windows Internals, Part 1: Covering Windows Server 2008 R2 and Windows 7. Microsoft Press, 6th edition, 2012.","edition":"6"},{"key":"e_1_2_1_31_1","first-page":"49","volume-title":"Proc. VLDB","author":"Zhou J.","year":"2005","unstructured":"J. Zhou , J. Cieslewicz , K. A. Ross , and M. Shah . Improving database performance on simultaneous multithreading processors . In Proc. VLDB , pages 49 -- 60 , 2005 . J. Zhou, J. Cieslewicz, K. A. Ross, and M. Shah. Improving database performance on simultaneous multithreading processors. In Proc. VLDB, pages 49--60, 2005."},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.5555\/1315451.1315487"}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/3149193.3149202","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T09:32:17Z","timestamp":1672219937000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/3149193.3149202"}},"subtitle":["a practical approach for robust index joins"],"short-title":[],"issued":{"date-parts":[[2017,10]]},"references-count":32,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2017,10]]}},"alternative-id":["10.14778\/3149193.3149202"],"URL":"https:\/\/doi.org\/10.14778\/3149193.3149202","relation":{},"ISSN":["2150-8097"],"issn-type":[{"value":"2150-8097","type":"print"}],"subject":[],"published":{"date-parts":[[2017,10]]}}}