MariaDB ColumnStore processes an end user query as follows through user to UM to PM:

  1. A request comes in through the MariaDB interface. MariaDB performs a table operation for all tables needed to fulfill the request and obtains the initial query execution plan from MariaDB.
  2. ColumnStore utilizes the MariaDB storage engine interface to convert the MariaDB table objects to InfiniDB objects. These objects are then sent to a User Module.
  3. The User Module converts the MariaDB execution plan and optimizes these objects into an ColumnStore execution plan. The User Module determines the steps needed to run the query and when they can run.
  4. The User Module consults the Extent Map for the locations of the data needed to satisfy the query and performs extent elimination based on the information contained within the Extent Map.
  5. The User Module sends commands to one or more Performance Modules to perform block I/O operations.
  6. The Performance Module(s) carry out predicate filtering, join processing, initial aggregation of data, and sends data back to the User Module for final result set processing.
  7. The User Module performs final result set aggregation and composes the result set for the query.
  8. The User Module / ExeMgr implements any window function calculiations (and any necessary sorting) on the result set.
  9. The User Module / mysqld performs select list functions, order by, and limit on the result set.
  10. The User Module / mysqld returns the result set back for delivery to the user.


Comments loading...