A method of managing database logging, the method comprising: receiving, by a user task executing in a database management system on a database server, a command to manipulate a data page of a database managed by the database management system, wherein the database management system includes a plurality of private log caches, a queue, and at least two versions of a transaction log, the at least two versions of a transaction log including an in-memory transaction log and a disk version of the transaction log; obtaining a lock on the data page of the database; creating a first log record in a first private log cache associated with the user task, the first log record recording a data manipulation to the data page of the database, wherein the first private log cache is partitioned into a plurality of blocks (200; 202), wherein the first log record is written into an active block of the plurality of blocks, and wherein the data page is pinned to the active block; enqueuing, by a reference or by copying contents of the active block, the first log record from the active block in the queue to unpin the data page, wherein the queue is shared among a plurality of tasks executing in the database management system, wherein the queue is configured to store contents of blocks from the plurality of private log caches associated with the plurality of tasks or references to the blocks that store log records from one or more transactions of the plurality of tasks before such log records are written to the in-memory transaction log, and wherein the in-memory transaction log includes transaction records that have not been flushed to the disk version of the transaction log; and releasing the lock on the data page of the database after enqueuing the first log record to the queue by unpinning the data page. receiving, by a user task executing in a database management system on a database server, a command to manipulate a data page of a database managed by the database management system, wherein the database management system includes a plurality of private log caches, a queue, and at least two versions of a transaction log, the at least two versions of a transaction log including an in-memory transaction log and a disk version of the transaction log; obtaining a lock on the data page of the database; creating a first log record in a first private log cache associated with the user task, the first log record recording a data manipulation to the data page of the database, wherein the first private log cache is partitioned into a plurality of blocks (200; 202), wherein the first log record is written into an active block of the plurality of blocks, and wherein the data page is pinned to the active block; enqueuing, by a reference or by copying contents of the active block, the first log record from the active block in the queue to unpin the data page, wherein the queue is shared among a plurality of tasks executing in the database management system, wherein the queue is configured to store contents of blocks from the plurality of private log caches associated with the plurality of tasks or references to the blocks that store log records from one or more transactions of the plurality of tasks before such log records are written to the in-memory transaction log, and wherein the in-memory transaction log includes transaction records that have not been flushed to the disk version of the transaction log; and releasing the lock on the data page of the database after enqueuing the first log record to the queue by unpinning the data page.