A multi-version concurrency control method in a database, comprising: receiving a data reading request generated by a read transaction, wherein the data reading request is used to request to read a page in the database and the data reading request comprises a timestamp of the read transaction; if a timestamp of a current version page of the page that is requested to read by the data reading request is less than or equal to the timestamp of the read transaction, reading the current version page of the page that is requested to read by the data reading request; and if the timestamp of the current version page is greater than the timestamp of the read transaction, performing page-level rollback by using a page pointer of the current version page in a data page link of the page that is requested to read, so as to roll back the current version page to a version page, a timestamp of which is less than or equal to the timestamp of the read transaction, wherein: the data page link comprises a page pointer of each version page of the page that is requested to read, and the page pointer of each version page is used to point to a previous version page of the version page; wherein the method further comprises: if one or more records on the version page obtained after the page-level rollback are in an operating state at a moment indicated by the timestamp of the version page obtained after the page-level rollback, performing row-level rollback according to a record pointer of the one or more records comprised in a record link of the page that is requested to read, so as to roll back the record in the operating state to a record prior to an operation, wherein: the record link comprises a record pointer of a record comprised in each version page of the page that is requested to read, and a record pointer of a record on a version page is used to point to a previous version record of the record. receiving a data reading request generated by a read transaction, wherein the data reading request is used to request to read a page in the database and the data reading request comprises a timestamp of the read transaction; if a timestamp of a current version page of the page that is requested to read by the data reading request is less than or equal to the timestamp of the read transaction, reading the current version page of the page that is requested to read by the data reading request; and if the timestamp of the current version page is greater than the timestamp of the read transaction, performing page-level rollback by using a page pointer of the current version page in a data page link of the page that is requested to read, so as to roll back the current version page to a version page, a timestamp of which is less than or equal to the timestamp of the read transaction, wherein: the data page link comprises a page pointer of each version page of the page that is requested to read, and the page pointer of each version page is used to point to a previous version page of the version page; wherein the method further comprises: if one or more records on the version page obtained after the page-level rollback are in an operating state at a moment indicated by the timestamp of the version page obtained after the page-level rollback, performing row-level rollback according to a record pointer of the one or more records comprised in a record link of the page that is requested to read, so as to roll back the record in the operating state to a record prior to an operation, wherein: the record link comprises a record pointer of a record comprised in each version page of the page that is requested to read, and a record pointer of a record on a version page is used to point to a previous version record of the record. the data page link comprises a page pointer of each version page of the page that is requested to read, and the page pointer of each version page is used to point to a previous version page of the version page; wherein the method further comprises: if one or more records on the version page obtained after the page-level rollback are in an operating state at a moment indicated by the timestamp of the version page obtained after the page-level rollback, performing row-level rollback according to a record pointer of the one or more records comprised in a record link of the page that is requested to read, so as to roll back the record in the operating state to a record prior to an operation, wherein: the record link comprises a record pointer of a record comprised in each version page of the page that is requested to read, and a record pointer of a record on a version page is used to point to a previous version record of the record.