Globally Incremented Variable for Parallel Transaction Integrity

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional parallel processing techniques face inefficiencies due to data corruption and high contention when multiple processes access shared data, leading to poor performance and increased processing time.

Innovation Solution

Implementing a globally incremented variable or clock to track changes in shared data, allowing processes to re-execute or abort transactions based on version information, and using a single CAS instruction to update the globally accessible variable, reducing unnecessary processing and contention.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If multiple processes use conventional locking techniques to access shared data, then data corruption is prevented, but processing speed and parallelism are reduced

Engineering Contradiction:
Improvedata integrityVSAvoidprocessing speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent extracts the locking mechanism from individual process interactions and replaces it with a globally incremented variable that all processes access without locking. The version number is separated from the data itself, allowing processes to read/write shared data concurrently while only contending for the version counter during commit validation.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The globally incremented variable acts as an intermediary between multiple processes accessing shared data. Instead of processes directly competing for locks on shared data, they use the version number as a mediator to detect conflicts and determine commit validity, enabling lock-free concurrent access.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If processes repeatedly execute CAS operations to update shared data, then data consistency is maintained, but processing time increases

Engineering Contradiction:
Improvedata consistencyVSAvoidprocessing time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent performs preliminary actions by having processes read the global version number at the start of transaction execution and store it locally. This preliminary capture of the version number allows processes to proceed with execution without repeated CAS operations, only performing a single validation check at commit time.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Each process serves itself by maintaining its own local copy of the version number and using it for validation. Instead of all processes competing for the same global counter through repeated CAS operations, each process independently tracks the version it observed, reducing contention and allowing parallel execution.

Inventive Principle:
Principle #25Self-service

3Productivity

If fine-grain lock-based concurrent software is implemented, then performance during run-time is improved, but development complexity increases

Engineering Contradiction:
Improverun-time performanceVSAvoiddevelopment complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent changes the parameter from discrete locks on individual data items to a continuous globally incremented version number. This parameter transformation allows the system to achieve fine-grain concurrency control without the complexity of managing multiple locks, as the version number provides a unified mechanism for detecting conflicts across all shared data.

Inventive Principle:
Principle #35Parameter changes

4Reliability

If processes abort transactions due to detected modifications, then data corruption is prevented, but processing efficiency decreases

Engineering Contradiction:
Improvedata integrityVSAvoidtransaction throughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent implements feedback by having processes continuously monitor the global version number against their locally stored value. When the version number changes during transaction execution, the process receives feedback indicating a conflict and can abort accordingly. This feedback mechanism prevents data corruption while allowing non-conflicting transactions to proceed efficiently.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS8028133B2Globally incremented variable or clock based methods and apparatus to implement parallel transactions
Publication Date: 2011.09.27 ORACLE AMERICAN INC
  • US8028133B2 patent drawing
  • US8028133B2 patent drawing
  • US8028133B2 patent drawing

AI summary

The present disclosure describes a unique way for each of multiple processes to operate in parallel and use the same shared data without causing corruption to the shared data. For example, during a commit phase, a corresponding transaction can attempt to increment a globally accessible version information variable and store a current value of the globally accessible version information variable for updating version information associated with modified data regardless of whether an associated attempt by the corresponding transaction to modify the globally accessible version information variable was successful. As an alternative mode, a corresponding transaction can merely read and store a current value of the globally accessible version information variable without attempting to update the globally accessible version information variable before such use. In yet another application, a parallel processing environment implements a combination of both aforementioned modes depending on a self-abort rate of the transaction.