diff --git a/_posts/2024-10-30-analytics-optimized-concurrent-transactions.md b/_posts/2024-10-30-analytics-optimized-concurrent-transactions.md index c1e4a3c82e1..f905eb98d62 100644 --- a/_posts/2024-10-30-analytics-optimized-concurrent-transactions.md +++ b/_posts/2024-10-30-analytics-optimized-concurrent-transactions.md @@ -34,9 +34,9 @@ DuckDB implements MVCC using a technique inspired by the paper [“Fast Serializ UPDATE Accounts SET Balance = Balance + 5 WHERE Name = 'Sally'; ``` -Row-Based MVCC MVCC When reading a row, a transaction will first check if there is version information for that row. If there is none, which is the common case, the transaction can read the original data. If there is version information, the transaction has to compare the transaction number at the transaction's start time with those in the undo buffers and pick the right version to read. @@ -66,9 +66,9 @@ In order to address these issues - DuckDB instead stores **bulk version informat UPDATE Accounts SET Balance = Balance + Balance / 5; ``` -Column-Based MVCC MVCC One beautiful aspect of this undo buffer scheme is that it is largely performance-transparent: if no changes are made, there are no extra computational cost associated with providing support for transactions. To the best of our knowledge, DuckDB is the *only transactional data management system that is optimized for bulk changes to data* that are common in analytical use cases. But even with changes present, our transaction scheme is very fast for the kind of transactions that we expect for analytical use cases. diff --git a/images/blog/mvcc/columnbasedmvcc.png b/images/blog/mvcc/columnbasedmvcc.png new file mode 100644 index 00000000000..445db7703ae Binary files /dev/null and b/images/blog/mvcc/columnbasedmvcc.png differ diff --git a/images/blog/mvcc/columnbasedmvcc.svg b/images/blog/mvcc/columnbasedmvcc.svg deleted file mode 100644 index 6510963032b..00000000000 --- a/images/blog/mvcc/columnbasedmvcc.svg +++ /dev/null @@ -1,613 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/blog/mvcc/rowbasedmvcc.png b/images/blog/mvcc/rowbasedmvcc.png new file mode 100644 index 00000000000..f3f1a3aa5bd Binary files /dev/null and b/images/blog/mvcc/rowbasedmvcc.png differ diff --git a/images/blog/mvcc/rowbasedmvcc.svg b/images/blog/mvcc/rowbasedmvcc.svg deleted file mode 100644 index 25c351b5303..00000000000 --- a/images/blog/mvcc/rowbasedmvcc.svg +++ /dev/null @@ -1,555 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -