A computer-implemented method of relocating data in a distributed database comprising: creating (505, 1010), by one or more processors, a second table in the distributed database, the second table including all columns from a first table; characterized by switching the first table to a mode where insertions to the table always append data to the first table rather than reusing space created by deleting data and disabling garbage collection operations on the first table; creating a third table to track deletions from the first table; copying (455, 1020), by the one or more processors, a first set of tuples from the first table to the second table, wherein the first set of tuples comprises the existing tuples of the first table in a state of the first table at the beginning of the method; modifying (700, 800, 1030), by the one or more processors, during the copying of the first set of tuples, data of the first table according to a modification; wherein the modification comprises an insertion, deletion, or update of one or more tuples of the first table; wherein an update to a tuple of the first table is replaced by a deletion of the tuple and an insertion of an updated tuple, and wherein the unique identifiers of tuples deleted from the first table during the copying (455, 1020) of the first set of tuples are tracked in the third table; after the copying (455, 1020) of the first set of tuples, modifying (465, 475, 485), by the one or more processors, data of the second table according to the modification by at least one of copying a second set of tuples from the first table to the second table, the second set of tuples comprising one or more tuples inserted into the first table in the modification, and deleting (460, 470, 480) tuples identified in the third table from the second table; and switching (560, 1050), by the one or more processors, the second table for the first table in a catalog of the distributed database. creating (505, 1010), by one or more processors, a second table in the distributed database, the second table including all columns from a first table; characterized by switching the first table to a mode where insertions to the table always append data to the first table rather than reusing space created by deleting data and disabling garbage collection operations on the first table; creating a third table to track deletions from the first table; copying (455, 1020), by the one or more processors, a first set of tuples from the first table to the second table, wherein the first set of tuples comprises the existing tuples of the first table in a state of the first table at the beginning of the method; modifying (700, 800, 1030), by the one or more processors, during the copying of the first set of tuples, data of the first table according to a modification; wherein the modification comprises an insertion, deletion, or update of one or more tuples of the first table; wherein an update to a tuple of the first table is replaced by a deletion of the tuple and an insertion of an updated tuple, and wherein the unique identifiers of tuples deleted from the first table during the copying (455, 1020) of the first set of tuples are tracked in the third table; after the copying (455, 1020) of the first set of tuples, modifying (465, 475, 485), by the one or more processors, data of the second table according to the modification by at least one of copying a second set of tuples from the first table to the second table, the second set of tuples comprising one or more tuples inserted into the first table in the modification, and deleting (460, 470, 480) tuples identified in the third table from the second table; and switching (560, 1050), by the one or more processors, the second table for the first table in a catalog of the distributed database.