A method performed by a share-nothing distributed online transaction processing, OLTP system comprised of routing nodes and execution nodes, a node comprising a processor and memory, the method comprising: receiving, at a routing node, a request from a client to perform a transaction on a database in the OLTP system, the transaction comprising information that identifies a plurality of sets of data that the transaction is to act on, the information identifying one or more first sets of data stored on a first execution node of the OLTP system and one or more second sets of data stored on a second execution node of the OLTP system, wherein a mapping table identifies where the sets of data are stored; separating the transaction into actions, wherein an action is established for each set of data that is to be acted on by the transaction, the actions comprising one or more first actions associated with the one or more first sets of data and one or more second actions associated with the one or more second sets of data; communicating the one or more first actions to the first node and the one or more second actions to the second node, and performing by the first execution node the one or more first actions on the one or more first sets of data, and by the second execution node the one or more second actions on the one or more second sets of data, wherein for performing by the first execution node more than one first action, a first thread executed on the first execution node receives the first actions and delegates each first action to a different second thread executed on the first execution node, and each second thread enqueues the respective first action, invokes a lock on the first set of data associated with that first action, performs that first action on the associated first set of data, and unlocks the associated first set of data after performing that first action is completed, and wherein for performing by the second execution node more than one second action, a third thread executed on the second execution node receives the second actions and delegates each second action to a different fourth thread executed on the second execution node, and each fourth thread enqueues the respective second action, invokes a lock on the second set of data associated with that second action, performs that second action on the associated second set of data, and unlocks the associated second set of data after performing that second action is completed. receiving, at a routing node, a request from a client to perform a transaction on a database in the OLTP system, the transaction comprising information that identifies a plurality of sets of data that the transaction is to act on, the information identifying one or more first sets of data stored on a first execution node of the OLTP system and one or more second sets of data stored on a second execution node of the OLTP system, wherein a mapping table identifies where the sets of data are stored; separating the transaction into actions, wherein an action is established for each set of data that is to be acted on by the transaction, the actions comprising one or more first actions associated with the one or more first sets of data and one or more second actions associated with the one or more second sets of data; communicating the one or more first actions to the first node and the one or more second actions to the second node, and performing by the first execution node the one or more first actions on the one or more first sets of data, and by the second execution node the one or more second actions on the one or more second sets of data, wherein for performing by the first execution node more than one first action, a first thread executed on the first execution node receives the first actions and delegates each first action to a different second thread executed on the first execution node, and each second thread enqueues the respective first action, invokes a lock on the first set of data associated with that first action, performs that first action on the associated first set of data, and unlocks the associated first set of data after performing that first action is completed, and wherein for performing by the second execution node more than one second action, a third thread executed on the second execution node receives the second actions and delegates each second action to a different fourth thread executed on the second execution node, and each fourth thread enqueues the respective second action, invokes a lock on the second set of data associated with that second action, performs that second action on the associated second set of data, and unlocks the associated second set of data after performing that second action is completed.