1. A method for scheduling database tasks for a query, said method comprising: receiving at least a portion of a query execution plan comprising a set of fragments with respective tasks having corresponding database virtual address ranges; mapping the database virtual address ranges to a set of memory pages; requesting respective locks for the set of memory pages; locking memory pages for the selected tasks; marking one or more of the tasks as being ready for execution based on whether locks have been granted for all of the memory page requests; and scheduling one or more tasks for execution when locks have been obtained for all of its memory pages.