IP Library Granted Patent US 9,183,245
Granted Patent B2
US 9,183,245 · App. 13/290,763 · Granted Nov 10, 2015

Implicit group commit when writing database log entries

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,183,245
App. No.
13/290,763
Granted
Nov 10, 2015
Kind
B2
Abstract

First k log buffers, in a data storage application including a plurality of log buffers are each loaded with exactly one transaction. Each log buffer is written to one of a plurality of log partitions. Thereafter, each of the log buffers is sent to an input/output (I/O) subsystem when they are respectively loaded with a single transaction. Transactions are subsequently accumulated in respective new current log buffers after sending the k log buffers to the I/O subsystem. The accumulated transactions are sent to the I/O subsystem when the earlier occurs of (i) the respective current log buffer being full or (ii) a number of incomplete input/output requests handled by the I/O subsystem falls below k. Related apparatus, systems, techniques and articles are also described.

Claims (41)

1. A non-transitory computer program product storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising:

receiving, in a data storage application including a plurality of log buffers, an indication of the number of input/output (I/O) requests that an I/O subsystem is capable of concurrently processing;

determining, based on the indication of the number of I/O requests that the I/O subsystem is capable of concurrently processing, a number k of active parallel I/Os for a plurality of log partitions;

loading, in the data storage application including a plurality of log buffers, first k log buffers with exactly one database transaction into memory, each log buffer being written to one of the plurality of log partitions, each log partition being stored in a separate physical storage device;

sending each of the log buffers to the I/O subsystem upon each log buffer being respectively loaded with a single transaction;

accumulating, after sending the k log buffers to the I/O subsystem, transactions in respective new log buffers; and

sending all of the log buffers with the accumulated transactions to the I/O subsystem when the earlier occurs of (i) the respective new log buffer being full or (ii) a number of incomplete input/output requests handled by the I/O subsystem falls below k.

2. A computer program product as in claim 1 , wherein there are k active I/O operations active on each log partition, wherein for n log partitions, log buffers belonging to the first k*n transactions are immediately closed and sent to the I/O subsystem.

3. A computer program product as in claim 1 , wherein the respective log buffers are closed prior to their being sent to the I/O subsystem.

4. A computer program product as in claim 1 , wherein the log buffers are distributed to log partitions according to a round-robin distribution.

5. A computer program product as in claim 1 , wherein the operations further comprise: generating a log by assembling a list of log entries based on the log buffers sent to the I/O subsystem.

6. A computer program product as in claim 5 , wherein the operations further comprise: initiating data recovery using the log upon an occurrence of a data recovery event.

7. A computer program product as in claim 5 , wherein the transactions are committed.

8. A computer program products as in claim 7 , wherein confirmation of a committed transaction is sent to a corresponding application only after all data of the transaction and all previously-committed transactions has been persisted to the log.

9. A computer program product as in claim 1 , wherein the data storage application comprises an in-memory database.

10. A computer program product as in claim 1 , wherein each log partition corresponds to segregated or separate physical disk storage space.

11. A method comprising:

receiving, in a data storage application including a plurality of log buffers, an indication of the number of input/output (I/O) requests that an I/O subsystem is capable of concurrently processing;

determining, based on the indication of the number of I/O requests that the I/O subsystem is capable of concurrently processing, a number k of active parallel I/Os for a plurality of log partitions;

loading, in the data storage application including a plurality of log buffers, first k log buffers with exactly one database transaction into memory, each log buffer being written to one of the plurality of log partitions, each log partition being stored in a separate physical storage device;

sending each of the log buffers to the I/O subsystem upon each log buffer being respectively loaded with a single transaction;

accumulating, after sending the k log buffers to the I/O subsystem, transactions in respective new log buffers; and

sending all of the log buffers with the accumulated transactions to the I/O subsystem when the earlier occurs of (i) the respective new log buffer being full or (ii) a number of incomplete input/output requests handled by the I/O subsystem falls below k.

12. A method as in claim 11 , wherein there are k active I/O operations active on each log partition, wherein for n log partitions, log buffers belonging to the first k*n transactions are immediately closed and sent to the I/O subsystem.

13. A method as in claim 11 , wherein the respective log buffers are closed prior to their being sent to the I/O subsystem.

14. A method as in claim 11 , wherein the log buffers are distributed to log partitions according to a round-robin distribution.

15. A method as in claim 11 , further comprising: generating a log by assembling a list of log entries based on the log buffers sent to the I/O subsystem.

16. A method as in claim 15 , further comprising: initiating data recovery using the log upon an occurrence of a data recovery event.

17. A method as in claim 15 , wherein the transactions are committed.

18. A method as in claim 17 , wherein confirmation of a committed transaction is sent to a corresponding application only after all data of the transaction and all previously-committed transactions has been persisted to the log.

19. A method as in claim 11 , wherein each log partition corresponds to segregated or separate physical disk storage space.

20. A system comprising:

a plurality of physical storage devices;

at least one programmable processor;

memory coupled to the at least one programmable processor, the memory storing instructions, which when executed by the at least one programmable processor, cause the at least one programmable processor to perform operations comprising:

receiving, in a data storage application including a plurality of log buffers, an indication of the number of input/output (I/O) requests that an I/O subsystem is capable of concurrently processing;

determining, based on the indication of the number of I/O requests that the I/O subsystem is capable of concurrently processing, a number k of active parallel I/Os for a plurality of log partitions;

loading, in the data storage application including a plurality of log buffers, first k log buffers with exactly one database transaction into memory, each log buffer being written to one of the plurality of log partitions, each log partition being stored in a separate physical storage device;

sending each of the log buffers to the I/O subsystem upon each log buffer being respectively loaded with a single transaction;

accumulating, after sending the k log buffers to the I/O subsystem, transactions in respective new log buffers; and

sending all of the log buffers with the accumulated transactions to the I/O subsystem when the earlier occurs of (i) the respective new log buffer being full or (ii) a number of incomplete input/output requests handled by the I/O subsystem falls below k.

Assignments (2)
CHANGE OF NAME Recorded Aug 26, 2014
From: SAP AG
To: SAP SE
Reel/Frame 033625/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2011
From: SCHRETER, IVAN
To: SAP AG
Reel/Frame 027454/0827 →