
|
If you were logged in you would be able to see more operations.
|
|
|
| Planning Status: |
Unspecified
|
|
Below is simplified description of how update is performed by the engine.
At first, update must read the record.
If record have backversion and backversion is ready to be garbage collected it must be erased.
Let primary page number is A and backversion page number is B.
Deletion of backversion creates dependency in precedence graph : A -> B, i.e. page A must be written after page B (as we just cleared backpointer at primary record version).
Then update must create and store new backversion. With high probablity it will be stored again on page B.
This create second dependency B -> A.
To prevent circle in precedence graph such case requires to write page A on disk clearing its dependencies.
This is so-called precedence write.
So, in the worst case we will write pages on disk for every updated record which make mass update performance terrible slow.
The likely issue happens if when engine performs update_in_place (for example second update of the same record in the same transaction).
|
|
Description
|
Below is simplified description of how update is performed by the engine.
At first, update must read the record.
If record have backversion and backversion is ready to be garbage collected it must be erased.
Let primary page number is A and backversion page number is B.
Deletion of backversion creates dependency in precedence graph : A -> B, i.e. page A must be written after page B (as we just cleared backpointer at primary record version).
Then update must create and store new backversion. With high probablity it will be stored again on page B.
This create second dependency B -> A.
To prevent circle in precedence graph such case requires to write page A on disk clearing its dependencies.
This is so-called precedence write.
So, in the worst case we will write pages on disk for every updated record which make mass update performance terrible slow.
The likely issue happens if when engine performs update_in_place (for example second update of the same record in the same transaction).
|
Show » |
|