A method in a record-based multi-version concurrent control, MVCC, database, DB, management system, the system comprising: a transaction table comprising a status of each of a plurality of transactions in the system, wherein the status of a transaction comprises the transaction being committed, aborted, or inflight, and wherein each transaction is indexed with a transaction identifier, TxID, wherein the TxIDs monotonically increase with time, and wherein a commit TxID is the oldest ID of active transactions in the transaction table; a storage subsystem configured to store a plurality of versions of records and an update history for each record, wherein each record comprises a TxID of a transaction that created or deleted the record; a logging subsystem configured to track all changes to the storage subsystem and configured to use a log record sequence number, LSN, for sequence comparison and recovery, wherein the LSN is a timestamp used to identify a status of a record of the storage subsystem; and a reader configured to perform operations of transaction and query; the method comprising: copying, by the reader, a system commit TxID, and a current LSN from a transaction log at a start of the reader; and determining, by the reader, whether a record is visible to the reader according to a record TxID, the commit TxID and the current LSN, wherein the record TxID is an identifier recorded in a record when it is written by an updating transaction, and wherein the transaction table is consulted only when the record TxID is equal to or larger than a commit TxID at a transaction start, wherein determining whether the record is visible comprises determining that the record is visible when a creation TxID of the record is less than the system commit TxID at the transaction start, or the transaction is the one itself that created the record; wherein determining whether the record is visible further comprises determining that the record is visible when a creation TxID of the record is committed and an end time stamp, ETS, of the creation TxID is less than the current LSN at the transaction start. a transaction table comprising a status of each of a plurality of transactions in the system, wherein the status of a transaction comprises the transaction being committed, aborted, or inflight, and wherein each transaction is indexed with a transaction identifier, TxID, wherein the TxIDs monotonically increase with time, and wherein a commit TxID is the oldest ID of active transactions in the transaction table; a storage subsystem configured to store a plurality of versions of records and an update history for each record, wherein each record comprises a TxID of a transaction that created or deleted the record; a logging subsystem configured to track all changes to the storage subsystem and configured to use a log record sequence number, LSN, for sequence comparison and recovery, wherein the LSN is a timestamp used to identify a status of a record of the storage subsystem; and a reader configured to perform operations of transaction and query; the method comprising: copying, by the reader, a system commit TxID, and a current LSN from a transaction log at a start of the reader; and determining, by the reader, whether a record is visible to the reader according to a record TxID, the commit TxID and the current LSN, wherein the record TxID is an identifier recorded in a record when it is written by an updating transaction, and wherein the transaction table is consulted only when the record TxID is equal to or larger than a commit TxID at a transaction start, wherein determining whether the record is visible comprises determining that the record is visible when a creation TxID of the record is less than the system commit TxID at the transaction start, or the transaction is the one itself that created the record; copying, by the reader, a system commit TxID, and a current LSN from a transaction log at a start of the reader; and determining, by the reader, whether a record is visible to the reader according to a record TxID, the commit TxID and the current LSN, wherein the record TxID is an identifier recorded in a record when it is written by an updating transaction, and wherein the transaction table is consulted only when the record TxID is equal to or larger than a commit TxID at a transaction start, wherein determining whether the record is visible comprises determining that the record is visible when a creation TxID of the record is less than the system commit TxID at the transaction start, or the transaction is the one itself that created the record; wherein determining whether the record is visible further comprises determining that the record is visible when a creation TxID of the record is committed and an end time stamp, ETS, of the creation TxID is less than the current LSN at the transaction start.