-
公开(公告)号:US11301469B2
公开(公告)日:2022-04-12
申请号:US17013439
申请日:2020-09-04
发明人: Michael Schreier , Thomas Neumann , Viktor Leis , Alfons Kemper , Tobias Muehlbauer , Jan Finis
IPC分类号: G06F16/00 , G06F16/2453 , G06F16/2455
摘要: A method dynamically selects query execution operators. A database engine receives a query, parses the query to form a query execution tree, and compiles the tree to form a first executable plan that includes in-memory operators. The database engine executes the first plan, including executing in-memory operators in parallel. While executing a first in-memory operator, insufficient memory is detected. In response, the database engine aborts the execution, and recompiles the query tree in two ways, forming a second executable plan that replaces the first in-memory operator with a first spooling operator. The first spooling operator executes within a fixed volatile memory budget and swaps to non-volatile memory according to the budget. A third executable plan retains the first in-memory operator, but schedules it to run serially. The database engine selects either the second plan or the third plan, and executes the selected plan to return results for the query.
-
公开(公告)号:US10795887B1
公开(公告)日:2020-10-06
申请号:US15681294
申请日:2017-08-18
发明人: Michael Schreier , Thomas Neumann , Viktor Leis , Alfons Kemper , Tobias Muehlbauer , Jan Finis
IPC分类号: G06F16/00 , G06F16/2453 , G06F16/2455
摘要: A database engine receives a query and parses the query to form a first intermediate query. The engine compiles the first intermediate query to form a first executable plan that includes in-memory operators that execute within memory without swapping to secondary memory. While executing a first in-memory operator in the first executable plan, the engine detects insufficient memory and aborts execution of the first executable plan. The engine optimizes the first intermediate query to form a second intermediate query, and compiles the second intermediate query to form a second executable plan. The second plan includes spooling operators that execute within fixed memory budgets and are configured to swap to the secondary memory when needed. The engine executes the second executable plan, including the spooling operators, to retrieve results from the database that are responsive to the query. The engine then returns the retrieved results.
-
公开(公告)号:US11720561B2
公开(公告)日:2023-08-08
申请号:US17719346
申请日:2022-04-12
发明人: Michael Schreier , Thomas Neumann , Viktor Leis , Alfons Kemper , Tobias Muehlbauer , Jan Finis
IPC分类号: G06F16/00 , G06F16/2453 , G06F16/2455
CPC分类号: G06F16/24542 , G06F16/2455 , G06F16/24549
摘要: A method dynamically selects query execution operators. A database engine receives a query, parses the query to form a query execution tree, and compiles the tree to form a first executable plan that includes in-memory operators. The database engine executes the first plan, including executing in-memory operators in parallel. While executing a first in-memory operator, insufficient memory is detected. In response, the database engine aborts the execution, and recompiles the query tree in two ways, forming a second executable plan that replaces the first in-memory operator with a first spooling operator. The first spooling operator executes within a fixed volatile memory budget and swaps to non-volatile memory according to the budget. A third executable plan retains the first in-memory operator, but schedules it to run serially. The database engine selects either the second plan or the third plan, and executes the selected plan to return results for the query.
-
公开(公告)号:US10521430B1
公开(公告)日:2019-12-31
申请号:US15650658
申请日:2017-07-14
发明人: Michael Schreier , Thomas Neumann , Viktor Leis , Alfons Kemper , Tobias Muehlbauer , Jan Finis
IPC分类号: G06F17/30 , G06F16/2455 , G06F16/2453 , G06F16/22
摘要: A method dynamically selects query execution operators for a database engine. The database engine receives a query and parses the query to form a query execution tree. The engine creates a first executable plan that includes in-memory operators, which execute within the volatile memory. While executing a first in-memory operator, the engine detects insufficient memory to complete the execution and aborts the execution. The engine then recompiles the query execution tree to form a second executable plan, which includes spooling operators. Each spooling operator executes within a fixed volatile memory budget. The engine executes the second executable plan, including the plurality of spooling operators, to identify a set of results from the database that is responsive to the query, and returns the results.
-
-
-