A method for implementation by one or more hardware data processors forming part of at least one computing device, the method comprising: handling a plurality of transactions in a database, each transaction comprising a plurality of operations on at least one record in the database, at least two of the transactions being handled concurrently and wherein each transaction has a corresponding transaction control block index that is specific to such transaction, the transaction control block index being an index number of a transaction control block in an array of transaction control blocks; assigning a temporary timestamp to each record of the at least one record in the database, the temporary timestamp being based, at least in part, on the corresponding transaction, in that the temporary timestamp includes a portion encapsulating the transaction control block index of the corresponding transaction; assigning a final timestamp to each record with a commit operation; determining, using a visibility function and based on the assigned temporary timestamps and final timestamps, which of the records are visible in a consistent view for a first transaction, wherein the consistent view is created by taking a current value of a timestamp generator; and allowing the records determined to be visible to be accessed by the first transaction; wherein the visibility function is such that a record is visible if its final timestamp or its temporary timestamp is lower than a timestamp of the consistent view, or if its temporary timestamp has the same transaction control block index of the consistent view, and wherein each timestamp is generated by the timestamp generator; the method further comprising: converting a temporary timestamp for a first record to a final timestamp upon execution of the commit operation by: entering a commit lock; setting (820, 830) the commit timestamp for the final timestamp of the first record to a value from the timestamp generator plus one; issuing a write memory barrier; increasing the timestamp generator value by one; and releasing the commit lock. handling a plurality of transactions in a database, each transaction comprising a plurality of operations on at least one record in the database, at least two of the transactions being handled concurrently and wherein each transaction has a corresponding transaction control block index that is specific to such transaction, the transaction control block index being an index number of a transaction control block in an array of transaction control blocks; assigning a temporary timestamp to each record of the at least one record in the database, the temporary timestamp being based, at least in part, on the corresponding transaction, in that the temporary timestamp includes a portion encapsulating the transaction control block index of the corresponding transaction; assigning a final timestamp to each record with a commit operation; determining, using a visibility function and based on the assigned temporary timestamps and final timestamps, which of the records are visible in a consistent view for a first transaction, wherein the consistent view is created by taking a current value of a timestamp generator; and allowing the records determined to be visible to be accessed by the first transaction; wherein the visibility function is such that a record is visible if its final timestamp or its temporary timestamp is lower than a timestamp of the consistent view, or if its temporary timestamp has the same transaction control block index of the consistent view, and wherein each timestamp is generated by the timestamp generator; the method further comprising: converting a temporary timestamp for a first record to a final timestamp upon execution of the commit operation by: entering a commit lock; setting (820, 830) the commit timestamp for the final timestamp of the first record to a value from the timestamp generator plus one; issuing a write memory barrier; increasing the timestamp generator value by one; and releasing the commit lock. entering a commit lock; setting (820, 830) the commit timestamp for the final timestamp of the first record to a value from the timestamp generator plus one; issuing a write memory barrier; increasing the timestamp generator value by one; and releasing the commit lock.