Globally Incremented Variable for Parallel Transaction Integrity
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
2Reliability
If processes repeatedly execute CAS operations to update shared data, then data consistency is maintained, but processing time increases
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.
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.
3Productivity
If fine-grain lock-based concurrent software is implemented, then performance during run-time is improved, but development complexity increases
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.
4Reliability
If processes abort transactions due to detected modifications, then data corruption is prevented, but processing efficiency decreases
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.
Data Source
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.


